我有两个 SQL 查询字符串,其中一个有效,一个无效。
工作的:
string updateLoginTime = "UPDATE DeviceUsers SET lastLogin = '" + dateTime + "' WHERE ID = '" + userID + "'";
这个没有:
string updateText = "UPDATE DocumentsRead SET timeRead = '" + dateTime + "' WHERE userID = '" + userID + "' AND fileName = '" + fileOnly +"'";
它抛出一个错误:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
在这两个查询中,dateTime
参数都作为字符串传递给 Web 方法。任何想法为什么第一个有效但第二个无效?
-编辑-
第二个查询现在的格式如下:
dateTime = DateTime.Now.ToString("dd-MM-yy HH-mm-ss");
using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["EndUsersConnectionString"].ConnectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "UPDATE DocumentsRead SET timeRead = @timeRead WHERE userID = @userID AND fileName = @fileName";
cmd.Parameters.AddWithValue("@timeRead", dateTime);
cmd.Parameters.AddWithValue("@userId", userID);
cmd.Parameters.AddWithValue("@fileName", fileName);
cmd.ExecuteNonQuery();
}
仍然得到同样的错误。