我在C#中遇到错误,我在使用int,date,float,varchar数据类型
按照命令
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();
答案 0 :(得分:2)
您的SQL语句中的参数缺少引号... 例如;
values (" + txtTno.Text + ",
只会做
values ( Whatever ,
应该是
values ('" + txtTno.Text + "',
给出正确的;
values ('Whatever',
然而正如其他人在评论中所说的那样不要这样做 - 而是使用SQL参数,因为这样既不容易出错,也更容易阅读,并且可以让您免于SQL注入等令人讨厌的事情。
这看起来像;
values ( @txtTno ,
然后
cmd.Parameters.AddWithValue("@txtTno", txtTno.Text);
答案 1 :(得分:1)
错误的原因是你连接了'
周围应该有Date
个标记的值,如INSERT/DELETE/UPDATE
s。您可以通过使用参数来解决此问题,但我建议您执行以下所有操作:
ExecuteNonQuery
之类的非查询操作,请使用{strong>非 ExecuteReader
,这是用于从查询中读取结果的。 int
使用int
,对{{1}使用string
} / varchar
等。nvarchar
SqlDbType
块中包裹IDisposable
类型。using
或app.config
并使用web.config
检索它(需要对程序集System.Configuration.ConfigurationManager.ConnectionStrings["name-here"].ConnectionString
的引用)代码
System.configuration