5
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 和 12/31/9999 11:59:59 PM 之间。”

解决方案是什么?

4

3 回答 3

2

尝试将@DateSQL Server 端的类型更改为DATETIME2(7)

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

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

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

于 2013-03-22T09:11:13.203 回答
0

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

于 2013-03-22T09:12:58.793 回答
0

如果您正在使用SQL Server 2008及以上,您可以这样做:

@Date第 1 步:将数据类型从更改DATETIMEDATETIME2(7)

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

SqlDbType.DateTime2
于 2013-03-22T09:02:55.047 回答