如何以格式传递电子邮件地址test@test1.com在对Access DB的更新查询中

本文关键字:DB Access 在对 更新 查询 com test@test1 格式 电子邮件地址 | 更新日期: 2023-09-27 18:27:56

我正在尝试将Access DB中的电子邮件列更新为"test@test1.com"。但我收到了这个错误/异常

System.Data.dll 中发生类型为"System.Data.OleDb.OleDbException"的未处理异常

附加信息:查询表达式"中存在语法错误(缺少运算符)test@test1.com"。

我的代码如下。

  string em = "test@" + comId + ".com";
  string cmd = "UPDATE tblWebUsers SET Email ="+ em +" WHERE CustRole = 'SuperAdmin'";
  OleDbCommand cmdv3 = new OleDbCommand(cmd, con);
  cmdv3.ExecuteNonQuery();

有什么帮助吗???

如何以格式传递电子邮件地址test@test1.com在对Access DB的更新查询中

查询中的电子邮件地址不在引号之间,因此数据库服务器尝试将电子邮件地址解析为指令而不是字符串。

  string em = "test@" + comId + ".com";
  string cmd = "UPDATE tblWebUsers SET Email ='"+ em +"' WHERE CustRole = 'SuperAdmin'";
  OleDbCommand cmdv3 = new OleDbCommand(cmd, con);
  cmdv3.ExecuteNonQuery();

对不起,这是我的一个错误
要在访问数据库中的查询中传递字符串值,必须将其括在单引号内。另一种更好的方法和安全编码的方法是使用参数

            string email = "test@test1.com";
            string comp = "test1";
            string cmd = "UPDATE tblCustomerUsers SET Email = ? WHERE  CompanyID = ? AND CustRole = 'SuperAdmin'";
            OleDbCommand cmdv3 = new OleDbCommand(cmd, con);
            cmdv3.Parameters.AddWithValue("@p1", email);
            cmdv3.Parameters.AddWithValue("@p2", comp);
            cmdv3.ExecuteNonQuery(); 

谢谢你的回答。我真的很感激你的出色工作。