插入错误

本文关键字:错误 插入 | 更新日期: 2023-09-27 18:12:47

嘿,我得到一个错误,说有一些错误与我的代码插入数据库时,不能完全找到它。该错误表明它是INSERT语句中的内容,但出现在"cmd.ExecuteNonQuery();"行。我正在使用access数据库。

Error: INSERT INTO语句语法错误。

con.Open();
string mysql; 
mysql = "INSERT INTO [User](FirstName,Surname,Age,HouseNumber,PostCode,Username,Password) 
         VALUES (?,?,?,?,?,?,?)";
OleDbCommand cmd = new OleDbCommand(mysql, con);
cmd.Parameters.AddWithValue("@p1", tbFirstName.Text);
cmd.Parameters.AddWithValue("@p2", tbSurname.Text);
cmd.Parameters.AddWithValue("@p3", int.Parse(tbAge.Text));
cmd.Parameters.AddWithValue("@p4", tbAddress1.Text);
cmd.Parameters.AddWithValue("@p5", tbPostCode.Text);
cmd.Parameters.AddWithValue("@p6", tbUsername.Text);
cmd.Parameters.AddWithValue("@p7", tbPassword.Text);
cmd.ExecuteNonQuery();
con.Close();

插入错误

当您添加带有值的参数时,您需要将其转换为匹配的类型,如果年龄是数字,则

cmd.Parameters.AddWithValue("@p3", int.Parse(tbAge.Text));

User是关键字你可以尝试使用

"INSERT INTO [User] ([FirstName], [Surname], [Age], [HouseNumber], [PostCode], [Username], [Password]) VALUES (?,?,?,?,?,?,?)";

您是否尝试用您的参数替换? ?

更正:我相信你必须像这样添加OleDBParameters:

con.Open();
string mysql; 
mysql = "INSERT INTO User(FirstName,Surname,Age,HouseNumber,PostCode,Username,Password) 
     VALUES (@p1,@p2,@p3,@p4,@p5,@p6,@p7)";
OleDbCommand cmd = new OleDbCommand(mysql, con);
cmd.Parameters.AddRange(new OleDbParameter[]
{
    new OleDbParameter("@p1", tbFirstName.Text),
    new OleDbParameter("@p2", tbSurname.Text),
           ...
});
cmd.ExecuteNonQuery();
con.Close();