2013-05-09 65 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