如何在SQL查询中执行操作

本文关键字:执行 操作 查询 SQL | 更新日期: 2023-09-27 18:31:23

我正在发出一个命令,如果书籍过期,该命令将计算罚款。 这是我的代码

if (duedate.Value < DateTime.Now)
{
    cmd.CommandText = ("UPDATE Penalty SET Penalty = '"+ (dateTimePicker1.Text - duedate.Value)*50 +"' WHERE Title = '" + textBox3.Text + "'");
    ...
}

此代码未运行,因为它在(dateTimePicker1.Text - duedate.Value)

如何在SQL查询中执行操作

编写查询的优雅方法是参数化查询:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

在伪代码中:

d1 = compute the Penalty value

然后,发出命令

cmd.CommandText = "UPDATE Penalty SET Penalty = @d1 WHERE Title = @d2";
cmd.Parameters.Add ("@d1", SqlDbType.DateTime).Value = d1;

您尝试从字符串中减去日期时间,请尝试以下操作

(dateTimePicker1.Value- duedate.Value).TotalDays*50

Ick!咔嚓!圣型错配蝙蝠侠!

  • 参数化你的SQL查询,否则成为SQL注入攻击的素材!
  • 不要尝试从字符串中减去日期。 这是无稽之谈。
  • 不要用DateTime.Now做数学. 在此处阅读原因。
  • 不要对50进行硬编码。 我假设这是每天罚款的美元金额。
    • 这应该在变量中传递,以便以后可以根据需要进行调整。
    • 你需要先到一整天

这项工作的,首先转换/转换内部值,然后减去最后的外部转换。

强制转换为日期时间 (

强制转换为日期时间 (dateTimePicker1.Text) - 强制转换为日期时间 (duedate.值))*50