2016-01-11 120 views
0

我試圖使用以下方式更新訪問數據庫;ExecuteNonQuery不更新Access數據庫

if(count > 0) 
{   
    sqlQuery = "UPDATE facial_user SET facial_1=? WHERE username=?;"; 
    using (OleDbCommand com2 = new OleDbCommand(sqlQuery, dbConnection)) 
    { 
     sqlCommand.Parameters.AddWithValue("@facial_1", engine.imageToBase64String(new Bitmap(pictureBox.Image, new Size(pictureBox.Width/10, pictureBox.Height/10)))); 
     sqlCommand.Parameters.AddWithValue("@username", userTextBox.Text); 
     sqlCommand.ExecuteNonQuery(); 
    } 
} 
else 
{ 
    sqlQuery = "INSERT INTO facial_user(id, username, facial_1) VALUES(@id, @username, @facial_1);"; 
    using (OleDbCommand com2 = new OleDbCommand(sqlQuery, dbConnection)) 
    { 
     sqlCommand.Parameters.AddWithValue("@id", (dataSet.Tables[0].Rows.Count + 1).ToString()); 
     sqlCommand.Parameters.AddWithValue("@username", userTextBox.Text); 
     sqlCommand.Parameters.AddWithValue("@facial_1", engine.imageToBase64String(new Bitmap(pictureBox.Image, new Size(pictureBox.Width, pictureBox.Height)))); 
     sqlCommand.ExecuteNonQuery(); 
    } 
} 

我能夠輸入兩個條件沒有問題,並退出它們沒有錯誤。但是,在關閉dbconnection後,我的數據庫文件沒有反映出這些更改。

請指教。

+0

您是否檢查過您嘗試更新的表中存在的用戶名? – Venkatesh

+0

如果您確定'Update'塊被執行,唯一的問題可能是'UserName'與您的參數不匹配。 – BendEg

+0

允許我詳細說明我的問題,我首先必須讀取db並檢查是否存在記錄。如果是,則計數> 0,並用更新更新該特定記錄,否則計數= 0並插入新記錄。我的程序能夠確定哪些條件運行,所以我很確定我正在正確讀取我的數據庫。我只是不明白爲什麼我不能做出改變。 :( – jazy1992

回答

0

如果INSERT聲明起作用並且UPDATE聲明不起作用,唯一可能的解決方案是對於給定的username沒有條目。因此,如果WHERE條件不能匹配用戶名,則沒有更新。

+0

如果沒有條目給定的用戶名,然後其他條件將運行,而我面臨的問題是,我的數據庫不能反映任何變化後,通過任何一個st工作室 – jazy1992

+0

你的意思是即使插入也沒有反映在你的數據庫.. – Venkatesh

+0

@ jazy1992你確定你沒有一個周圍的事務你中止或類似的東西?這些聲明看起來很好,所以他們應該很好地執 –