C# 如何在SQL查询中执行操作?
我发出一个命令,如果书过期了,将被处以罚款。这是我的密码C# 如何在SQL查询中执行操作?,c#,sql-server,C#,Sql Server,我发出一个命令,如果书过期了,将被处以罚款。这是我的密码 if (duedate.Value < DateTime.Now) { cmd.CommandText = ("UPDATE Penalty SET Penalty = '"+ (dateTimePicker1.Text - duedate.Value)*50 +"' WHERE Title = '" + textBox3.Text + "'"); ... } if(duedate.Value
if (duedate.Value < DateTime.Now)
{
cmd.CommandText = ("UPDATE Penalty SET Penalty = '"+ (dateTimePicker1.Text - duedate.Value)*50 +"' WHERE Title = '" + textBox3.Text + "'");
...
}
if(duedate.Value
此代码未运行,因为它在
(dateTimePicker1.Text-duedate.Value)
上有错误。如果您试图从字符串中减去datetime,请尝试下面的操作
(dateTimePicker1.Value- duedate.Value).TotalDays*50
组合查询的优雅方式是参数化查询: 在伪代码中:
d1 = compute the Penalty value
然后,发出你的命令
cmd.CommandText = "UPDATE Penalty SET Penalty = @d1 WHERE Title = @d2";
cmd.Parameters.Add ("@d1", SqlDbType.DateTime).Value = d1;
哎呀!伊加兹!神圣的蝙蝠侠
- 参数化您的SQL查询,否则将成为李>
- 不要试图从字符串中减去日期。那是荒谬的
- 不要用
计算李>DateTime.Now
- 不要硬编码
。我想这是每天罚款的金额。50
- 这应该在变量中传递,以便以后需要时可以对其进行调整
- 你需要先到一整天
转换到datetime(转换到datetime(dateTimePicker1.Text)-转换到datetime(duedate.Value))*50什么类型的
duedate.Value
?和dateTimePicker1。Text
是string
您不能在string
中执行减法,因为该代码容易受到sql注入攻击。这真糟糕!这会编译吗(dateTimePicker1.Text-duedate.Value)
@SriramSakthivel,显然,不,不编译。我忘了说这是伪代码。我会解决的。你解决了其他问题。但是没有指出OP为什么在这里的主要问题。现在你的答案看起来不错+1