在C#中插入数据

时间:2019-01-07 05:47:48

标签: c# sql-server

SQL Server数据库表是:

inward_id, int(Primary Key),
gate_inward_done, varchar(50),
gate_entry_no, varchar(100),
gate_entry_date, date,
inward_date, date,
vendor_code, varchar(max),
vendor_name, varchar(max),
dc_no, varchar(max),
dc_date, date,
bill_received, varchar(max),
invoice_no, varchar(max),
invoice_date, date,
inv_total_amount, numeric(18,2),
gst_applicable, varchar(max),
cgst, numeric(18,2),
sgst, numeric(18,2),
igst, numeric(18,2),
inv_net_amount, numeric(18,2),
nu_freight, numeric(18,2),
fraction_amount, numeric(18,2),
approvar_department, varchar(max),
vc_remarks_master, varchar(max)

当我按下C#应用程序中的保存按钮时,数据未保存在数据库中,并显示错误“将数据varchar转换为数字”。

这是我的代码:

SqlCommand cmd1 = con.CreateCommand();
cmd1.CommandType = CommandType.Text;
cmd1.CommandText = "INSERT INTO inward_master values ('"+cmbGateEntry.Text+"','"+txtGateEntryNo.Text+"','"+dtpGateEntryDate.Value.ToString("yyyy-MM-dd")+"','"+dtpInwardDate.Value.ToString("yyyy-MM-dd")+"','"+cmbVendorCode.Text+"','"+txtVendorName.Text+"','"+txtDcNo.Text+"','"+dtpDcDate.Value.ToString("yyyy-MM-dd") +"','"+cmbbill_received.Text+"','"+txtInvoice_No.Text+"','"+dtpInvoiceDate.Value.ToString("yyyy-MM-dd") +"','"+ txtinv_total_amount.Text +"','"+cmbgst_applicable.Text+"','" + txtcgst.Text + "','" + txtsgst.Text + "','" + txtigst.Text + "','" + txtinv_net_amount.Text + "','" + txtnu_freight.Text + "', '" + txtfraction_amount.Text + "','"+cmbApproverDept.Text+"','"+txtvc_remarks_master.Text+"')";

cmd1.ExecuteNonQuery();}

请给出解决方案。在此先感谢。

2 个答案:

答案 0 :(得分:0)

A ,对于查询使用参数化方法,使用Concatenation会是一个不好的做法,它比您使用的方法更好,更干净。

然后 B ,该错误清楚地表明您正在尝试向Numeric Column插入一个字符串值,在这种情况下,您已经使用过'" + txtfraction_amount.Text + "',应该是{{1 }}(删除了用于字符串的单引号)作为其数字值(这只是纠正查询的示例,它将起作用)。

Here是参数化查询的一个很好的示例/解释。

答案 1 :(得分:0)

如果inward_id是自动递增,则必须使用此:

INSERT INTO inward_master (fields....) VALUES(values...)