我正在插入记录,我的一个对象是组合框。该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();
答案 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();