2016-01-11 86 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你确定你没有一个周围的事务你中止或类似的东西?这些声明看起来很好,所以他们应该很好地执 –