【发布时间】:2017-11-02 10:51:51
【问题描述】:
我在使用 int、date、float、varchar 数据类型的 C# 中遇到错误
听从命令
con.Open();
string cb = "insert into tran1(tno,billno,Tdate,Acno,SubTotal,TaxPer,Discountper,DiscountAmt,TaxAmount,GrandTotal,UserId,Remarks,cash,change)values(" + txtTno.Text + ",'" + txtBillNo.Text + "',"+dtpBillDate.Text+","+txtACNO.Text+","+txtSubTotal.Text+","+txtTaxPer.Text+","+txtDiscountPer.Text+","+txtDiscountAmount.Text+","+txtTaxAmt.Text+","+txtTotal.Text+","+txtUserId.Text+",'"+txtNarr.Text+"',"+txtCash.Text+",'"+txtChange.Text+"')";
cmd = new SqlCommand(cb);
cmd.Connection = con;
cmd.ExecuteReader();
if (con.State == ConnectionState.Open)
{
con.Close();
}
con.Close();
【问题讨论】:
-
您似乎正试图在数据库中插入一行。在本地数据库中手动尝试 SQL。很有可能是语法问题或列数与值数不匹配。
-
对于您当前的问题并防止更多错误,请使用SqlParameters。
-
请开始执行带参数的 SQL 查询。这不仅可以保护您免受 SQL 注入,还可以更轻松地使用不同的数据类型,因为它将其转换为所需的数据。 See this MSDN Documentation
-
强制警告:Exploits of a Mom.
-
最有可能导致查询出错的地方就是这个
dtpBillDate.Text,当然使用SqlParamaters是必须的。
标签: sql sql-server winforms