在Access c#中插入查询

本文关键字:插入 查询 Access | 更新日期: 2023-09-27 18:06:54

我正在访问数据库,我有一个用户表。

我有一个插入查询:
DataBase.Execute("Insert into Users(UserID,FirstName,SecondName,UserName,Password,Permission) Values(" +
    obj.PersonID +
    ",'" + obj.FirstName +
    "','" + obj.LastName +
    "','" + username +
    "','" + psw +
    "'," + permission + ")");

我检查了所有参数的值,它们与表中的值相同…但它说有一个语法错误在我的INSERT查询

在Access c#中插入查询

参数,参数,参数。对代码的第一个好处是,您忘记了单引号。其次,可以避免可怕的SQL注入漏洞。第三,您的代码将更容易阅读。想想看:

string insertQuery = "INSERT INTO table (field1, field2, field3) VALUES (@par1, @par2, @par3)";
Database.Execute(insertQuery, var1, var2, var3);

其中var1var2var3是包含需要插入值的变量。

有一个更简单的解决方案(但更糟糕,因为它仍然容易受到SQL注入的攻击),它将使您的代码比您发布的示例更具可读性:string.format。而不是:

DataBase.Execute("Insert into Users(UserID,FirstName,SecondName,UserName,Password,Permission) Values(" +
obj.PersonID +
",'" + obj.FirstName +
"','" + obj.LastName +
"','" + username +
"','" + psw +
"'," + permission + ")");

你可以这样做,更清楚,更难以忘记一些简单的引号:

string query = string.Format("Insert into Users (UserID,FirstName,SecondName,UserName,Password,Permission) Values({0}, '{1}', '{2}', '{3}', '{4}', {5})", obj.PersonID, obj.FirstName, obj.LastName, username, psw, permission);
Database.Execute(query);

下面是一个使用参数进行插入的简单例子:http://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute(v=vs.111).aspx