在我開始之前,我會告訴你,在我考慮發佈一個問題之前,我已經嘗試過在以前的問題和其他網站上已經提出的一切。碰巧,似乎沒有任何工作,我只是厭倦了這一點。INSERT INTO命令不起作用
作爲一些背景信息,這是爲我的計算A2項目,所以我現在有點時間 - 即我不能改變我的代碼加載理想。
無論如何,在這個問題上... 我在我的代碼中使用SQLCe從各種表讀取並寫入一個。到目前爲止,從表中讀取的代碼工作正常,所以這是任何連接問題首先。我正在努力的代碼如下:
string connectionString = Properties.Settings.Default.BookingSystemDatabaseConnectionString;
using (SqlCeConnection myConnection = new SqlCeConnection(connectionString))
{
myConnection.Open();
try
{
string commandStr = "INSERT INTO bookings(username, room, time) VALUES(@username, @room, @time)";
SqlCeCommand myCommand = new SqlCeCommand(commandStr);
//Passes parameters into SQL command.
myCommand.Parameters.AddWithValue("username", StaticUser.StudentUser.username);
myCommand.Parameters.AddWithValue("room", roomBox.Text);
myCommand.Parameters.AddWithValue("time", timeBox.Text);
//Executes SQL command. Returns the number of affected rows (unecessary for my purposes; a bi-product if you will).
myCommand.ExecuteNonQuery();
}
catch
{
System.Windows.Forms.MessageBox.Show("Could not write new booking to database. This is likely because the database cannot be reached.", "Error");
Program.AccessError = true;
}
myConnection.Close();
}
這只是我試圖解決我遇到的問題的很多方法之一。我還探索:
myCommand.Parameters.Add(new SqlCeParameter("username", StaticUser.StudentUser.username));
傳遞參數,而哪些現在我想不起來了另一種方法(使用「.value的= StaticUser.StudentUser.username」我認爲)。此外,我嘗試使用命令的'using'語句來保存我自己關閉連接(我可能最終會使用使用'using'的解決方案)。最後(儘管這不是一個年代的回憶),我想:
SqlCeCommand myCommand = new SqlCeCommand("INSERT INTO bookings(username, room, time) VALUES(@username, @room, @time)", myConnection)
再次,當然,也沒有用。
爲了突出顯示我遇到的問題的實際症狀:代碼似乎運行正常;通過我上面粘貼的完整方法的步驟顯示沒有錯誤被捕獲(當然,消息框不會出現 - 我後來意識到逐步執行可能是一個不必要的過程),而在其他方法中,我已經談到了同樣的事情發生。那麼問題就在於表'預訂'實際上並沒有被更新。
所以,我的問題,爲什麼?
我沒有做明顯的事情,並檢查更新的數據庫的調試文件夾。
你正在添加'參數的方式很好myCommand.Parameters.AddWithValue',那麼你究竟面臨邁克爾的問題是什麼? – MethodMan 2013-03-25 18:28:27
表'預訂'根本沒有被寫入。沒有錯誤,運行該過程後表格中沒有新字段。 – the1mike1man 2013-03-25 18:30:09
您是否檢查過以確保您擁有'GRANT權限'來執行更新..?如果MessageBox沒有顯示它是否碰到你的代碼的'catch'部分..? – MethodMan 2013-03-25 18:31:56