我正在編寫一個應用程序,用於更新一個新創建的數據庫。該應用程序上有一個datagridview,用於顯示數據庫中的數據。 我的應用程序正在進行一些非常奇怪的事情。SQL更新查詢沒有更新數據庫
這是當我運行的代碼,收出關的應用程序,並再次運行應用程序,更新數據庫
string updateCommandString = "UPDATE RoomsTable SET [Date Checked][email protected] WHERE ID = @id";
using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\users\spreston\documents\visual studio 2012\Projects\roomChecksProgram\roomChecksProgram\roomsBase.accdb"))
{
using (OleDbCommand updateCommand = new OleDbCommand())
{
updateCommand.Connection = conn;
updateCommand.CommandText = updateCommandString;
updateCommand.CommandType = CommandType.Text;
updateCommand.Parameters.AddWithValue("@checkedDate",
this.dateTimePicker1.Value.ToShortDateString());
updateCommand.Parameters.AddWithValue("@id", row.roomID);
try
{
conn.Open();
updateCommand.ExecuteNonQuery();
conn.Close();
conn.Dispose();
}
catch(OleDbException ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}
現在的代碼,改變的是正確地顯示在我的datagridview連接到數據庫,但是當我看到實際的數據庫時,根本沒有任何改變。我不知道爲什麼會發生這種情況。
我的sql更新更新連接到datagrid視圖的數據庫。 SOW HOW是datagrid視圖顯示正確的數據,但不顯示數據庫本身。
編輯: 我以前也沒有那種用SQL的經驗。
編輯: 交易代碼:
string updateCommandString = "UPDATE RoomsTable SET [Date Checked][email protected] WHERE ID = @id";
using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\users\spreston\documents\visual studio 2012\Projects\roomChecksProgram\roomChecksProgram\roomsBase.accdb"))
{
OleDbTransaction transaction = null;
using (OleDbCommand updateCommand = new OleDbCommand())
{
updateCommand.Connection = conn;
updateCommand.Transaction = transaction;
updateCommand.CommandText = updateCommandString;
updateCommand.CommandType = CommandType.Text;
updateCommand.Parameters.AddWithValue("@checkedDate", this.dateTimePicker1.Value.ToShortDateString());
updateCommand.Parameters.AddWithValue("@id", row.roomID);
try
{
conn.Open();
transaction = conn.BeginTransaction();
updateCommand.ExecuteNonQuery();
transaction.Commit();
conn.Close();
conn.Dispose();
}
catch(OleDbException ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}
我不知道,如果'dateTimePicker1.Value.ToShortDateString()'是必要的。將DateTime轉換爲字符串是文化特定的。 – nrodic
爲什麼使用conn.Dispose?當您自動使用「使用」對象時Dispose –
您是否有可能碰到內部異常但它不是OldDbException?如果將捕獲擴展到「例外」,你會發現什麼? – dougajmcdonald