2013-05-09 54 views
1

嘿,我得到一个错误说有什么错插入数据库时​​,我的代码,不能完全找到它。该错误表明它在INSERT语句中出现,但出现在行"cmd.ExecuteNonQuery();"上。我正在使用访问数据库。INSERT错误ASP.NET

错误:语法错误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(); 
+3

什么是确切的错误信息?你的桌子看起来如何? – magnattic 2013-05-09 16:07:40

+0

INSERT INTO语句中的语法错误。 数据库字段反映了插入语句的数据库字段。 – Chris 2013-05-09 16:10:58

回答

5

当你与价值添加参数,你需要将其转换为匹配的类型,如果年龄号码,然后

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

,也User is key word你可以用

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

添加此,谢谢,但仍然收到相同的错误信息。 – Chris 2013-05-09 16:17:44

+1

+1用户是关键字 – Csharp 2013-05-09 16:21:33

+0

添加了[用户],谢谢,但仍然是相同的错误。 – Chris 2013-05-09 16:29:37

-1

有无尝试您尝试用您的参数替换?

更正:我认为你必须添加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(); 
+0

访问数据库需要“?” – Chris 2013-05-09 16:31:46

+0

不适用于.NET中的OLEDB – 2013-05-09 16:33:26

+0

试过它只是一个事情,什么也没做。错误仍然存​​在,谢谢。 – Chris 2013-05-09 16:36:37