[asp.net]asp 转换 varchar 数据类型为 datetime 错误 SQL aspx

标签: Asp.net SQLServer C#
发布时间: 2016/7/9 23:51:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我不知道需要做些什么。我在寻找两天,没找到有用的东西。

fieldValue = row.Cells[0].Text;
DateTime timeNow = DateTime.Now;

string constring = System.Configuration.ConfigurationManager.ConnectionStrings["ITCConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(constring)) {
    timeNow = Convert.ToDateTime(timeNow);
    using (SqlCommand cmd = new SqlCommand("UPDATE AktywneZgloszenia SET Data_przyjecia_do_realizacji='" + timeNow + "' WHERE Nr_zgloszenia ='"+fieldValue+"';", connection)) {
        using (SqlDataAdapter da = new SqlDataAdapter(cmd)) {
            connection.Open();
            cmd.ExecuteNonQuery(); // <--executeNon
            connection.Close();
            GridView1.DataBind();
        }
    }
}

当我试图保存/更新变量时态时遇到错误︰

Varchar 数据类型为 datetime 数据类型转换导致外的范围值。该语句已终止。

在这两列数据库类型 = datetime 变量在丹麦人 [] 类型 = 字符串。(不在此fragment) 我清除数据库中的所有数据。 我做错了吗?

解决方法 1:

马丁 · 史密斯暗示过,您想要使用 SQL 命令参数,而不是生成命令通过串联。

就像这样︰

fieldValue = row.Cells[0].Text;
DateTime timeNow = DateTime.Now;

string constring = System.Configuration.ConfigurationManager.ConnectionStrings["ITCConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(constring)) {
// timeNow = Convert.ToDateTime(timeNow);  (not needed)
using (SqlCommand cmd = new SqlCommand("UPDATE AktywneZgloszenia SET Data_przyjecia_do_realizacji= @pTimeNow  WHERE Nr_zgloszenia = @pFieldValue;", connection)) {
    using (SqlDataAdapter da = new SqlDataAdapter(cmd)) {
        connection.Open();
    cmd.Parameters.AddWithValue("@pTimeNow", timeNow); // <-- 'pass' timenow
    cmd.Parameters.AddWithValue("@pFieldValue", fieldValue); // <-- 'pass' fieldValue
        cmd.ExecuteNonQuery(); // <--executeNon
        connection.Close();
        GridView1.DataBind();
    }
}

}

赞助商