未能将参数值从DataRowView转换为Int32

本文关键字:DataRowView 转换 Int32 参数 | 更新日期: 2023-09-27 18:21:30

我正在插入记录,其中一个对象是combobox。组合框已连接到表格。当我插入这个错误出现:

无法将参数值从DataRowView转换为Int32

我的代码:

cn.Open();
SqlCommand Insert = new SqlCommand();
Insert.Connection = cn;
Insert.CommandType = CommandType.Text;
Insert.CommandText = "INSERT INTO Ticket  VALUES (CustomerID, Date, Store, Amount, NoStub) ";
Insert.Parameters.Add("CustomerID", SqlDbType.Int).Value = cboName.SelectedValue;
Insert.Parameters.Add("Date", SqlDbType.DateTime).Value = dtpDate.Value.Date.ToString();
Insert.Parameters.Add("Store", SqlDbType.NVarChar).Value = txtStore.Text;
Insert.Parameters.Add("Amount", SqlDbType.Decimal).Value = txtAmount.Text;
Insert.Parameters.Add("NoStub", SqlDbType.Decimal).Value = txtStub.Text;
Insert.ExecuteNonQuery();
cn.Close();

未能将参数值从DataRowView转换为Int32

使用此示例代码:

command.Parameters.Add("@CustomerID", SqlDbType.Int).Value = Convert.ToInt32(storeCode);

或使用cboName的int.parse

将代码更改为以下内容,并让服务器解析数据类型

cn.Open();
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = cn;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "INSERT INTO Ticket(CustomerID, Date, Store, Amount, NoStub)  
                       VALUES (@CustomerID, @Date, @Store, @Amount, @NoStub) ";
sqlCmd.Parameters.AddWithValue("@CustomerID", cboName.SelectedValue);
sqlCmd.Parameters.AddWithValue("@Date", dtpDate.Value.Date.ToString());
sqlCmd.Parameters.AddWithValue("@Store", txtStore.Text);
sqlCmd.Parameters.AddWithValue("@Amount", txtAmount.Text);
sqlCmd.Parameters.AddWithValue("@NoStub", txtStub.Text);
sqlCmd.ExecuteNonQuery();
cn.Close();