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

时间:2013-07-08 03:06:28

标签: c# sql-server sql-server-2008 tsql ado.net

我正在插入记录,我的一个对象是组合框。该combox已连接到该表。当我插入此错误时出现:

  

无法将参数值从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();

2 个答案:

答案 0 :(得分:1)

使用此sample代码:

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

或使用 对于cboName,int.parse

答案 1 :(得分:1)

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

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();