我尝试将登录记录保存到SQL Server。
但是我收到了一个错误:
<{1}}正在运行的将nvarchar数据类型转换为日期时间数据类型会导致超出范围的值。
cmd.ExecuteNonQuery();
代码行上的。
这些代码有什么问题?
我的表Login.aspx
:
Login
C#代码:
[Id] [int] IDENTITY(1,1) NOT NULL,
[Url] [nvarchar](150) NOT NULL,
[Time] [datetime] NOT NULL,
[Count] [int] NOT NULL,
[PcName] [nvarchar](50) NOT NULL,
[Browser] [nvarchar](50) NOT NULL,
[IpAddress] [nvarchar](50) NOT NULL
答案 0 :(得分:4)
我认为你应该改变这一行:
cmd.Parameters.AddWithValue("Time", DateTime.Now.ToString());
到此:
cmd.Parameters.AddWithValue("@Time", DateTime.Now);
答案 1 :(得分:3)
问题1:您正在将字符串发送到DateTime参数Time
。
解决方案1:您需要将DateTime.Now
代替DateTime.Now.ToString()
传递给Time
参数
问题2:您错过@
函数中参数前面的AddWithValue()
符号。
解决方案2 :您需要在@
函数中添加参数前面的AddWithValue()
符号。
试试这个:
cmd.Parameters.AddWithValue("@Time", DateTime.Now);
cmd.Parameters.AddWithValue("@Url", page.Trim());
cmd.Parameters.AddWithValue("@Count",
Convert.ToInt32(Application["hit"].ToString()));
cmd.Parameters.AddWithValue("@Browser", browser.Trim());
cmd.Parameters.AddWithValue("@PcName", pcname.Trim());
cmd.Parameters.AddWithValue("@IpAddress", IP.Trim());