【发布时间】:2021-12-07 19:28:31
【问题描述】:
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.”。
如果一切正常,则输出将显示“会员积分已更改。”。
谁能告诉我我需要为 if else 语句做些什么才能实现这一目标?
【问题讨论】:
-
如果客户名称是 John Paul,并且您的数据库有 100 个 John Pauls.. 您要更新所有这些吗?检查这个docs.microsoft.com/en-us/dotnet/api/…如何正确使用sql命令
-
您当前正在多次执行 SQL 语句 - 首先使用
.ExecuteNonQuery(),然后可能会使用ExecuteScalar多次 - 这绝对是一个大禁忌! 执行 一次 并获取您需要的信息 - 不要一遍又一遍地执行它! -
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables
标签: c# html sql-server