【发布时间】:2016-07-30 19:15:23
【问题描述】:
我有一个 Access 数据库,其中包含一个名为 user 的表。该表有两个字段,短文本类型的“用户名”和短文本类型的“用户密码”。用户名是主键!
我做了一个windows窗体应用程序Visual C#,并成功连接到数据库。
我首先在Access中运行这个sql语句,
"INSERT INTO USER(USERNAME,USERPASSWORD) VALUES('Tom','1234')"
并将记录正确追加到表中。
现在,如果我尝试通过 winform 应用程序执行相同的 sql 查询,我会得到 一个异常,其中涉及“插入”中的 a 语法错误声明!
奇怪的是,我在一周前就提出了申请,并且成功了。
这是应该附加记录的方法:
public void insertNewUser()
{
String sqlQuery = "INSERT INTO USER(USERNAME,USERPASSWORD) VALUES('malmo','1234')";
OleDbCommand cmd = new OleDbCommand(sqlQuery, this.conn);
int rowsAffected = 0;
try
{
rowsAffected = cmd.ExecuteNonQuery();
System.Windows.Forms.MessageBox.Show("User inserted in database successfully!", "Debug:AppDatabase:insertNewUser");
}
catch (System.InvalidOperationException ex)
{
System.Windows.Forms.MessageBox.Show("User did not inserted in database", "Debug:AppDatabase:insertNewUser");
System.Windows.Forms.MessageBox.Show(ex.Message, "Debug:AppDatabase:insertNewUser");
}
catch (System.Data.OleDb.OleDbException ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message, "Debug:AppDatabase:insertNewUser");
}
System.Windows.Forms.MessageBox.Show(rowsAffected.ToString(), "RowsAffected");
}
我在 第二个 catch 块中得到了异常!
【问题讨论】:
-
USER是一个关键字。请改用[USER]。 -
用户也是关键字?真的是现在吗?
-
SQL 与其他语言一样具有关键字 - 例如
SELECT。永远不要将密码存储为明文。