private void btnChange_Click(object sender, EventArgs e)
{
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "update Customer set MembershipPoint='" textMembershipPoint.Text "' where NameCustomer='" textNameCustomer.Text "'";
cmd.ExecuteNonQuery();
if (cmd.ExecuteScalar() != null)
{
textMembershipPoint.Text = Convert.ToString(cmd.ExecuteScalar());
}
else if (cmd.ExecuteScalar() != )
{
MessageBox.Show("Invalid Name of Customer.");
}
else if (cmd.ExecuteScalar() != )
{
MessageBox.Show("Invalid Membership Point. Only Number Allowed.");
}
else
{
MessageBox.Show("Membership Point is changed.");
}
con.Close();
display_data();
}
我有一個Customer用列呼叫的資料庫表ID_Customer,NameCustomer和MembershipPoint。
當客戶輸入不在Customer表中的名稱時,輸出將顯示“客戶名稱無效”。
如果客戶輸入無效的 MembershipPoint,輸出將顯示“Invalid Membership Point. Only Number Allowed.”。
如果一切正常,則輸出將顯示“Membership Point is changed.”。
誰能告訴我我需要為 if else 陳述句做些什么才能實作這一目標?
uj5u.com熱心網友回復:
首先,您必須學習使用引數化查詢以避免#1 漏洞——SQL 注入!這樣做 -總是- 沒有例外。
其次——現在,你UPDATE多次執行你的陳述句,這是非常糟糕的......只需執行一次,記錄結果,然后僅根據結果進行推理——不要多次執行 SQL 命令。
第三:它是公認的最佳實踐同時創建SqlConnection還有SqlCommand同樣需要-不要打開連接的地方你的代碼外,把它掛在了延長的時間段-在這里創建它的權利,根據需要(并在完成后釋放它)。
所以嘗試這樣的事情:
private void btnChange_Click(object sender, EventArgs e)
{
// check if the membership points text is a valid INT or not
int membershipPoints = 0;
if (!int.TryParse(textMembershipPoint.Text, out membershipPoints))
{
MessageBox.Show("Invalid Membership Point. Only Number Allowed.");
return;
}
// use a properly parametrized query
string updateQuery = "UPDATE dbo.Customer SET MembershipPoint = @Points WHERE NameCustomer = @CustomerName;";
// put your SqlConnection and SqlCommand into a proper "using" block
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand (updateQuery, con))
{
// define the parameters and set their values
cmd.Parameters.Add("@Points", SqlDbType.Int).Value = membershipPoints;
cmd.Parameters.Add("@CustomerName", SqlDbType.VarChar, 100).Value = textNameCustomer.Text;
// open connection, execute UPDATE, record number of rows updated, close connection
con.Open();
int rowsUpdated = cmd.ExecuteNonQuery();
con.Close();
// now reason just on the result
if (rowsUpdated > 0)
{
// some rows were updated --> success
MessageBox.Show("Success - rows updated");
}
else
{
// no rows were updated -->
MessageBox.Show("No rows updated - most likely invalid customer name");
}
}
display_data();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/329769.html
標籤:C# html sql-server
上一篇:檢查日期是圣誕節還是元旦的函式
