如何在SQL查询中执行操作?

时间:2013-09-14 19:19:27

标签: c# sql-server

如果书籍过期,我正在制作一个可以计算的命令。这是我的代码

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

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

上有错误

4 个答案:

答案 0 :(得分:2)

撰写查询的优雅方式是参数化查询: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;

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

伊克! Egads!神圣类型不匹配蝙蝠侠!

  • 对SQL查询进行参数化,否则成为SQL Injection attacks
  • 的素材
  • 不要尝试从字符串中减去日期。那是荒谬的。
  • 请勿使用DateTime.Now进行数学运算。 Read why here
  • 不要对50进行硬编码。我认为这是罚款每天的美元金额。
    • 应该在变量中传递,以便您可以在以后根据需要进行调整。
    • 您需要先整天

答案 3 :(得分:0)

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

强制转换为datetime(强制转换为datetime(dateTimePicker1.Text) - 强制转换为datetime(duedate.Value))* 50