将nvarchar数据类型转换为日期时间数据类型导致C#中的超出范围值

时间:2014-03-14 12:06:21

标签: c# asp.net sql datetime

我尝试将登录记录保存到SQL Server。

但是我收到了一个错误:

  

将nvarchar数据类型转换为日期时间数据类型会导致超出范围的值。

<{1}}正在运行的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  

2 个答案:

答案 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());