sqldatetime溢出异常c#.NET

问题描述 投票:0回答:4
string con = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;

        SqlConnection cn = new SqlConnection(con);
        string insert_jobseeker = "INSERT INTO JobSeeker_Registration(Password,HintQuestion,Answer,Date)"
      + " values (@Password,@HintQuestion,@Answer,@Date)";

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cn;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = insert_jobseeker;

 cmd.Parameters.Add(new SqlParameter("@Password", SqlDbType.VarChar, 50));
            cmd.Parameters["@Password"].Value = txtPassword.Text;
            cmd.Parameters.Add(new SqlParameter("@HintQuestion", SqlDbType.VarChar, 50));
            cmd.Parameters["@HintQuestion"].Value = ddlQuestion.Text;
            cmd.Parameters.Add(new SqlParameter("@Answer", SqlDbType.VarChar, 50));
            cmd.Parameters["@Answer"].Value = txtAnswer.Text;

            **cmd.Parameters.Add(new SqlParameter("@Date", SqlDbType.DateTime));
            cmd.Parameters["@Date"].Value = System.DateTime.Now**

我遇到错误

“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 9999 年 12 月 31 日 11:59:59 下午。”

这个问题有什么解决办法吗?

c# sql sqlexception
4个回答
2
投票

尝试将 SQL Server 端的

@Date
的类型更改为
DATETIME2(7)

然后在您的代码中使用这一行:

cmd.Parameters.Add(new SqlParameter("@Date", SqlDbType.DateTime2)); 

您的代码看起来没问题,如图所示,但由于本地化问题或您的区域/时间设置有问题,转换可能会发生问题,所以看看这是否有效。


0
投票

如果您正在使用

SQL Server 2008
及以上,您可以执行以下操作:

第 1 步:将

@Date
数据类型从
DATETIME
更改为
DATETIME2(7)

第 2 步:在您的代码隐藏中,使用以下内容:

SqlDbType.DateTime2

0
投票

“Date”是关键字,请勿将其用作列名。 如果必须,请将其括在插入语句中的 [] 中:[日期] 但最好将其更改为其他内容,例如“RegistrationDate”。


0
投票

使用此错误后抛出 System.InvalidOperationException:“无法找到 SQL 类型“DATETIME2”的 Dot Net 数据类型映射。”

© www.soinside.com 2019 - 2024. All rights reserved.