我發現一個解決這個問題的解決方法:將來自數據庫的數據加載到一組控件中,並將更新信息輸入到一組單獨的控件中。感謝您的評論;該應用程序正在工作。c#中的更新命令不更新數據庫
試圖更新數據庫行。我根據我在幾個論壇/網站上找到的內容編寫了以下代碼。他的代碼沒有更新數據庫。該數據庫將正確地更新,如果@editFirstName的值是文字,如
UpdateCmd.Parameters["@editFirstName"] = "George";
我也試過
UpdateCmd.Parameters["@editFirstName"] = "'" + editFirstNameContent.Text + "'";
:
嘗試任何修復這個錯誤我發現了以下後
哪些沒有工作。
我也試圖把文本框的數據到一個變量,使用這個變量:
string firstNameValue = editFirstNameContent.Text;
UpdateCmd.Parameters["@editFirstName"] = firstNameValue;
,沒有工作。
因此,UPDATE命令顯然是更新數據庫。但是,顯然Parameters.Value行不讀取TextBox中的數據,因此它不會使用更改的值進行更新。
protected void editCustomerButton_Click(object Sender, EventArgs e)
{
string connString = WebConfigurationManager.ConnectionStrings["proofreadThePlanetConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connString))
{
connection.Open();
string updateString = "UPDATE tblCustomerInfo SET [email protected], [email protected], [email protected], [email protected] WHERE customerID=" + Request.QueryString["EID"];
SqlCommand UpdateCmd = new SqlCommand(updateString, connection);
UpdateCmd.Parameters.Add("@editCustomerID", SqlDbType.Int);
UpdateCmd.Parameters["@editCustomerID"].Value = editCustomerIDContent.Text;
UpdateCmd.Parameters.Add("@editFirstName", SqlDbType.VarChar, 25);
UpdateCmd.Parameters["@editFirstName"].Value = editFirstNameContent.Text;
UpdateCmd.Parameters.Add("@editLastName", SqlDbType.VarChar, 50);
UpdateCmd.Parameters["@editLastName"].Value = editLastNameContent.Text;
UpdateCmd.Parameters.Add("@editEmail", SqlDbType.VarChar, 75);
UpdateCmd.Parameters["@editEmail"].Value = editEmailContent.Text;
UpdateCmd.ExecuteNonQuery();
}
}
爲什麼你使用所有這些參數,然後在你的命令結尾仍然有concat。 –
當您通過Parameters.Add添加更新的值時,您還應該通過Parameters.Add傳遞QueryString參數以避免SQL注入。你爲什麼更新customerID,這可能是你的PK? – devio
你有錯誤嗎?嘗試放一個'try {...} catch(Exception ex)...'阻止它 - 有例外嗎?什麼樣的數據類型是'customerID'?如果它應該是一個字符串,那麼你需要在它周圍加單引號!或更好:**使用參數!** –