string Connstr = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Shahrivar92\Documents\Safa_co.accdb");
OleDbConnection oleconn = new OleDbConnection(Connstr);
OleDbCommand olecmd = new OleDbCommand();
olecmd.Connection = oleconn;
olecmd.CommandText = string.Format("insert into info-ghrardad(gh-note,gh-tarikh,gh-mablagh,gh-shomareh,gh-modat,today-date)values(@gh-note,@gh-tarikh,@gh-mablagh,@gh-shomareh,@gh-modat,@today-date)");
oleconn.Open();
olecmd.Parameters.AddWithValue("@gh-note", Gh_name.Text);
olecmd.Parameters.AddWithValue("@gh-tarikh", Gh_date.Text);
olecmd.Parameters.AddWithValue("@gh-mablagh", Gh_mablagh.Text);
olecmd.Parameters.AddWithValue("@gh-shomareh", Gh_number.Text);
olecmd.Parameters.AddWithValue("@gh-modat", Gh_modat.Text);
olecmd.Parameters.AddWithValue("@today-date", TodayDate.Text);
olecmd.ExecuteNonQuery();
oleconn.Close();
System.Data.OleDb.OleDbException was unhandled HResult=-2147217900 Message=Syntax error in INSERT INTO statement.
答案 0 :(得分:2)
除了marc_s关于命名参数的评论和使用"?"作为占位符,表格中的列名为" - "因为这个名字是IMO一个非常糟糕的命名惯例。这就像你告诉系统减去两个值。
也就是说,你可能需要将插入值更改为"?"占位符并以相同的顺序(您已经拥有)添加它们,但也可能需要将列名包括在括号内,勾号,等等,例如
insert into [info-ghrardad] (
[gh-note], [gh-tarikh], [gh-mablagh], [gh-shomareh], [gh-modat], [today-date] )
values( ?, ?, ?, ?, ?, ?)");
那么你的参数......
此外,如果您只是将文本放入文本而不是实际日期或日期/时间数据类型值,那么您的日期字段可能是崩溃的一部分,如果这是实际结构所具有的。类似地,如果金额应该是数字,并且您正在抓取简单文本,请确保它具有适当的预期格式。