2015-11-04 50 views
0

它說我的語法有問題,但我不知道如何解決它。我的數據庫確實包含這些列。有人能告訴我爲什麼它在查詢中引發語法錯誤?

string Query = "INSERT into Users (full_name, email, password, admin) VALUES (@name,@email,@password,@admin)"; 

try 
{ 
    OleDbConnection con = new OleDbConnection(@" provider=Microsoft.ace.Oledb.12.0; data source=" + dbString); 

    OleDbCommand cmd = new OleDbCommand(); 
    cmd.CommandType = CommandType.Text; 

    cmd.Parameters.AddWithValue("@name", nameTB.Text); 
    cmd.Parameters.AddWithValue("@email", emailTB.Text); 
    cmd.Parameters.AddWithValue("@password", passTB.Text); 
    cmd.Parameters.AddWithValue("@admin",'0'); 

    cmd.CommandText = Query; 
    cmd.Connection = con; 

    con.Open(); 
    cmd.ExecuteNonQuery(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
+2

您可以將附近'cmd.CommadText'一個斷點,並檢查產生什麼實際的查詢。您也可以在SQL管理工作室中複製並運行查詢以瞭解確切的錯誤。還要檢查你傳遞的任何參數是否爲空 – Marshal

+0

你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already /)並停止使用'.AddWithValue()' - 它會導致意想不到的結果和令人驚訝的結果... –

+0

您是否驗證過您的參數都不是空字符串? –

回答

5

使用

string Query = "INSERT into Users ([full_name], [email], [password], [admin]) VALUES (@name,@email,@password,@admin)"; 

因爲密碼是在OLE DB保留關鍵字,你可以看到here

+0

謝謝你,這是問題 – kipatbarzel1

相關問題