MS Access的INSERT INTO语句语法错误

本文关键字:语句 语法 错误 INTO INSERT Access MS | 更新日期: 2023-09-27 18:09:33

我有一个在正常条件下工作的SQL插入命令。这意味着如果我填写每个文本框,数据被发送到数据库(访问数据库)。

但是当我"忘记"1个文本框时,我收到"INSERT INTO语句中的语法错误"。怎样才能避免这种情况呢?

string commandPerson = "Insert into Person (LastName,FirstName,DateOfBirth,Phone,Email,AdditionalInfo, Hobbies, CVinDropBOX, Informationrequest) values('" + txtLastN.Text + "','" + txtFirstN.Text + "'," + txtDOB.Text + ",'" + txtPhone.Text + "','" + txtEmail.Text + "','" + txtAdditionalInfo.Text + "','" + txtHobbies.Text + "'," + chkCVDROPBOX.Checked + "," + chkInformation.Checked + ")";

当每个文本框都有一个值时,没有问题。只有当我留下1或2个文本框为空时,错误信息显示:INSERT INTO语句语法错误

MS Access的INSERT INTO语句语法错误

使用参数化方法,这不仅可以安全地防止SQL注入,而且还可以让您解决问题,因为您将在没有提供参数值时将参数值设置为NULL(或string.empty)。

这里有一个例子:

string ConnString = Utils.GetConnString();
string SqlString = "Insert Into Contacts (FirstName, LastName) Values (?,?)";
using (OleDbConnection conn = new OleDbConnection(ConnString))
{
  using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
  {
    cmd.CommandType = CommandType.Text;
    cmd.Parameters.AddWithValue("FirstName", txtFirstName.Text);
    cmd.Parameters.AddWithValue("LastName", txtLastName.Text);
    conn.Open();
    cmd.ExecuteNonQuery();
  }
}

和这里的完整文章:http://www.mikesdotnetting.com/Article/26/Parameter-Queries-in-ASP.NET-with-MS-Access

试试这样做(你缺少了单引号):

 '" + txtDOB.Text + "'.