INSERT INTO 语句 c#.net Winforms Devexpress 中的语法错误?

Posted

技术标签:

【中文标题】INSERT INTO 语句 c#.net Winforms Devexpress 中的语法错误?【英文标题】:Syntax error in INSERT INTO statement c#.net Winforms Devexpress? 【发布时间】:2013-11-05 12:24:58 【问题描述】:

我从 DateEdit 获取日期并尝试存储到 Access 数据库中。但它显示这样的错误

Syntax error in INSERT INTO statement.

我的插入语句是这样的

 OleDbCommand top = new OleDbCommand("INSERT INTO invoice(invoice_number,order_number,customername,status,subtotal,tax,total,date) VALUES (" + inno + "," + odrno + ",'" + name + "','"+ chk1 +"' ,"+ subtottal +","+ tax +","+total+",'"+date+"')", conn);
 top.ExecuteNonQuery();

除了日期剩余值存储成功,但我如何存储日期??

我得到这样的日期DateTime date = dateEdit1.DateTime;

帮帮我。

【问题讨论】:

date.ToString("yyyy-MM-dd")替换日期 您可能想阅读parameterised queries 嗨,wudzik,我想具体更改哪里? string date = dateEdit1.DateTime.ToString("yyyy-mm-dd")喜欢diz啊? 【参考方案1】:

DATE 是 Microsoft Access 的 reserved keyword。您应该将它与方括号一起使用,例如[DATE]

而且您应该始终使用parameterized queries。这种字符串连接对SQL Injection 攻击开放。

OleDbCommand top = new OleDbCommand(@"INSERT INTO invoice(invoice_number,order_number,customername,status,subtotal,tax,total,[date]) 
                                     VALUES (@invoice_number, @order_number, @customername, @status, @subtotal, @tax, @total, @date)", conn);
top.Parameters.AddWithValue("@invoice_number", inno);
top.Parameters.AddWithValue("@order_number", odrno);
top.Parameters.AddWithValue("@customername", name);
top.Parameters.AddWithValue("@status", chk1);
top.Parameters.AddWithValue("@subtotal", subtotal);
top.Parameters.AddWithValue("@tax", text);
top.Parameters.AddWithValue("@total", total);
top.Parameters.AddWithValue("@date", date);

一般建议不要使用保留关键字作为数据库中的标识符和对象名称。

【讨论】:

非常感谢@soner Gonul

以上是关于INSERT INTO 语句 c#.net Winforms Devexpress 中的语法错误?的主要内容,如果未能解决你的问题,请参考以下文章

使用此 INSERT INTO 语句和 .NET OleDb 命名空间时如何解决语法错误?

MS Access 的 SQL INSERT INTO 语句

Oracle中如何用一条insert into 语句插入多条数据 如: insert into 表 values(多条数据)????????

“INSERT INTO 语句中的语法错误”错误 - 错误是啥?

INSERT INTO 语句包含以下未知字段名称

insert into 插入数据问题