我想使用ComboBox将记录插入数据库。 ComboBox连接到另一个表,这是错误:
将数据类型nvarchar转换为数字时出错。
private void InsertReceipt()
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO Ticket(CustomerID, Date, Store, Amount, NoStub)" +
"VALUES (@CustomerID, @Date, @Store, @Amount, @NoStub) ";
cmd.Parameters.AddWithValue("@CustomerID", cboName.SelectedValue);
cmd.Parameters.AddWithValue("@Date", dtpDate.Value.Date.ToString());
cmd.Parameters.AddWithValue("@Store", txtStore.Text);
cmd.Parameters.AddWithValue("@Amount", txtAmount.Text);
cmd.Parameters.AddWithValue("@NoStub", txtStub.Text);
cmd.ExecuteNonQuery();
}
void GetRecords2()
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "SELECT CustomerID, firstname + ', ' + lastname AS Name FROM Customer";
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds, "Customer");
cboName.DataSource = ds;
cboName.DisplayMember = "Customer.Name";
cboName.ValueMember = "Customer.CustomerID";
}
答案 0 :(得分:3)
当您致电AddWithValue
时,请确保您传递的数据类型与列类型匹配。这可能是候选人:
cmd.Parameters.AddWithValue("@Amount", txtAmount.Text);
在这一行中,您将文本字符串传递给显然需要数值(金额)的内容。您应该先将txtAmount.Text
解析为小数,然后传递该值:
decimal amount = decimal.Parse(txtAmount.Text);
cmd.Parameters.AddWithValue("@Amount", amount);
使用此代码,如果txtAmount.Text
中的字符串无法解析为小数,您仍可能会收到异常,但至少您会知道哪个值导致了问题。您也可以/应该对其他值执行相同的操作,以确保它们与列类型匹配。
答案 1 :(得分:0)
尝试string.isNullorEmpty(txtAmount.text);
答案 2 :(得分:-1)
private void button1_Click(object sender, EventArgs e)
{
string sql;
sql = "insert into slab (date,sober_visor,tesh,shift,group,heat_no,st_grade,thick,width,length,location,pcs,remarkes,slab_no) values (@date,@sober_vsor,@tesh,@shift,@group,@heat_no,@st_grade,@thick,@width,@length,@loction,@pcs,@slab_no);select scope_identity()";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@date", txt_date.Text);
cmd.Parameters.AddWithValue("@sober_visor", com_sober_visor.ToString());
cmd.Parameters.AddWithValue("@shift", txt_shift.Text);
cmd.Parameters.AddWithValue("@heat_no", txt_heat_no.Text);
cmd.Parameters.AddWithValue("@thick", txt_shift.Text);
cmd.Parameters.AddWithValue("@width", txt_heat_no.Text);
cmd.Parameters.AddWithValue("@length", txt_length.Text);
cmd.Parameters.AddWithValue("@pcs", txt_pcs.Text);
cmd.Parameters.AddWithValue("@st_grade", txt_st_gread.Text);
cmd.Parameters.AddWithValue("@location", txt_loction.Text);
cmd.Parameters.AddWithValue("@slab_no", txt_slab_no.Text);
con.Open();
cmd.ExecuteNonQuery();
txt_heat_no.Text = cmd.ExecuteScalar().ToString();
con.Close();
MessageBox.Show("تمت عملية الإضافة");
}
}
}
答案 3 :(得分:-1)
cmd.Parameters.AddWithValue("@ödenecektutar", Convert.ToDecimal(tutar1.Text.Substring(0, tutar.Text.Length - 1)));