0

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

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

4 回答 4

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;
于 2013-09-14T19:26:08.197 回答
0

你尝试从字符串中减去日期时间,试试下面

(dateTimePicker1.Value- duedate.Value).TotalDays*50
于 2013-09-14T19:24:13.703 回答
0

哎呀!埃加兹!神圣型错配蝙蝠侠!

  • 参数化您的 SQL 查询,否则会成为SQL 注入攻击的源泉!
  • 不要试图从字符串中减去日期。这很荒谬。
  • 不要用DateTime.Now. 在这里阅读为什么
  • 不要硬编码50. 我假设这是每天罚款的美元金额。
    • 这应该在一个变量中传递,以便您以后可以根据需要对其进行调整。
    • 你需要先到整日
于 2013-09-14T19:30:02.177 回答
0

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

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

于 2013-09-14T19:41:42.630 回答