如何在 c# 中正确执行带有 Datetime.now 的 sql 查询字符串?
how can I execute an sql query string with Datetime.now correctly in c#?
Connection.Open();
string dd = DateTime.Now.ToShortDateString();
string qry = "UPDATE TAccount SET Amount = Amount +" +
a.transactionAmount.ToString() +
" WHERE ID = " + a.ID.ToString() +
" insert into TransactionHistory (ID, CardNumber, Amount, TransactionDate)
values ((SELECT MAX(ID) FROM TransactionHistory)+1, " +
a.ID.ToString() + " , " + a.transactionAmount.ToString() +
" , " + dd.ToString() + ")";
SqlCommand cmd = new SqlCommand(qry, Connection);
cmd.ExecuteNonQuery();
Connection.Close();
我在执行以下查询时遇到以下错误,而在 VB.Net 中我在执行相同查询时没有遇到任何问题。
”
System.Data.dll 中发生了 'System.Data.SqlClient.SqlException' 类型的异常,但未在用户代码中处理
附加信息:操作数类型冲突:int 与日期不兼容
“
我删除了日期并且它工作正常但是当我重新添加日期时仍然是同样的事情
感谢任何帮助
正确答案"in no way"。不要使用本地时间记录 activity,使用服务器时间,即 getdate()
。不要在查询中使用字符串连接,这很容易出错,并且为 sql 注入打开了大门。请改用参数。
这里正确的做法应该是使用 sql 参数,并且对于这种 purpose.Any 方式根本不发送当前时间,这似乎是一个转换问题 - 而不是 dd.ToString()
用 '
包装它并使用服务器日期时间格式(顺便说一句,格式“2010-01-28”应该始终有效..)。
Connection.Open();
string dd = DateTime.Now.ToShortDateString();
string qry = "UPDATE TAccount SET Amount = Amount +" +
a.transactionAmount.ToString() +
" WHERE ID = " + a.ID.ToString() +
" insert into TransactionHistory (ID, CardNumber, Amount, TransactionDate)
values ((SELECT MAX(ID) FROM TransactionHistory)+1, " +
a.ID.ToString() + " , " + a.transactionAmount.ToString() +
" , " + dd.ToString() + ")";
SqlCommand cmd = new SqlCommand(qry, Connection);
cmd.ExecuteNonQuery();
Connection.Close();
我在执行以下查询时遇到以下错误,而在 VB.Net 中我在执行相同查询时没有遇到任何问题。
” System.Data.dll 中发生了 'System.Data.SqlClient.SqlException' 类型的异常,但未在用户代码中处理
附加信息:操作数类型冲突:int 与日期不兼容 “
我删除了日期并且它工作正常但是当我重新添加日期时仍然是同样的事情
感谢任何帮助
正确答案"in no way"。不要使用本地时间记录 activity,使用服务器时间,即 getdate()
。不要在查询中使用字符串连接,这很容易出错,并且为 sql 注入打开了大门。请改用参数。
这里正确的做法应该是使用 sql 参数,并且对于这种 purpose.Any 方式根本不发送当前时间,这似乎是一个转换问题 - 而不是 dd.ToString()
用 '
包装它并使用服务器日期时间格式(顺便说一句,格式“2010-01-28”应该始终有效..)。