通过 SQL 更新数据库

本文关键字:数据库 更新 SQL 通过 | 更新日期: 2023-09-27 18:34:10

我正在尝试使用已经存在的值(在同一行中)更新我的代码,但出现以下错误。

这是代码:

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:''Projects_2012''Project_Noam''Access''myProject.accdb";
OleDbConnection myConnection = new OleDbConnection(connectionString);
string myInsertQuery = (String.Format("UPDATE tblUsers SET usersID='{0}', usersFirstName='{1}', " +
" usersLastName='{2}',usersPassword='{3}', usersAdress='{4}', usersMail  ='{5}' " +
" WHERE usersID='{6}'", idn, firstName.Text, lastName.Text, password.Text, adress.Text
, mail.Text,  idn));
OleDbCommand myCommand = new OleDbCommand(myInsertQuery);
myCommand.Connection = myConnection;
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();

这是错误:

System.Data.OleDb.OleDbException crossed a native / managed boundary
Message = mismatch in criteria expression
Source = Microsoft Office Access Database Engine
ErrorCode = -2147217913

我的数据库中的参数定义如下:"userID=number",其余参数定义为文本。

通过 SQL 更新数据库

首先使用参数化查询开始。请参阅 OleDbParameter。另请阅读有关 SQL 注入的信息。当数据库期望一种类型的值而您提供另一种类型的值时,通常会发生您遇到的错误。在您的情况下,您的 userID 看起来像是整数类型,并且由于您将其括在单引号中,因此会收到此错误。尝试以下查询(更改的部分为 userID={0} )。编辑:在where子句中也应该改变。

string myInsertQuery = (String.Format("UPDATE tblUsers SET usersID={0}, usersFirstName='{1}', " +
                " usersLastName='{2}',usersPassword='{3}', usersAdress='{4}', usersMail  ='{5}' " +
                " WHERE usersID={6}", idn, firstName.Text, lastName.Text, password.Text, adress.Text
                , mail.Text,  idn));