OLEDB SQL语法错误,我无法看到它

时间:2015-05-06 03:05:58

标签: c# sql ms-access oledbconnection

我正在尝试将我的C#程序上的新用户发送到数据库(在本例中为MSAccess)。我按如下方式创建字符串......

String StrCmd = String.Format("INSERT INTO tbl_Users (Username, Password, IsAdmin) VALUES ('{0}', '{1}', {2});", Username, passwordHash, AdminPower);

这会创建一个SQL字符串,例如......

INSERT INTO tbl_Users (Username, Password, IsAdmin) 
VALUES ('TestUser', '1013638657', False);

如果我将其粘贴到MSAccess中的Query中,这可以正常工作,但在代码中我不断收到Syntax error in INSERT INTO statement.错误。

有人能看到我遗失的明显事物吗?

其他信息:

UsernamepasswordHash是字符串,AdminPower是布尔值。

UsernamePassword是文字字段,IsAdmin是是/否字段。

感兴趣的代码块......

OleDbConnection MyConn = new OleDbConnection(Program.ConnStr);
MyConn.Open();
String StrCmd = String.Format("INSERT INTO tbl_Users (Username, Password, IsAdmin) VALUES ('{0}', '{1}', {2});", Username, passwordHash, AdminPower);
OleDbCommand Cmd = new OleDbCommand(StrCmd, MyConn);
Cmd.ExecuteNonQuery();
MyConn.Close();

2 个答案:

答案 0 :(得分:0)

试试这个'{2}'

String StrCmd = String.Format("INSERT INTO tbl_Users (Username, Password, IsAdmin) VALUES ('{0}', '{1}', '{2}');", Username, passwordHash, AdminPower);

答案 1 :(得分:0)

Facepalms 我注意到我正在检查的保留字列表是针对SQL-Sever的。我找到了一个用于MSAccess和" PASSWORD" Access中的保留字...我将其更改为UserPassword,它可以工作......

哎呀。