asp转换varchar数据类型为datetime错误SQL aspx

时间:2015-06-21 17:32:22

标签: c# asp.net sql-server datetime varchar

我不知道我需要做什么。我正在搜索两天,但没有找到有用的东西。

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数据类型转换为日期时间数据类型   在超出范围的价值。声明已经终止。

两个数据库中的列type = datetime dane中的变量[] type = string。(不在此片段中) 我清除了数据库中的所有数据。 我做错了什么?

1 个答案:

答案 0 :(得分:3)

正如Martin Smith暗示的那样,您希望使用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();
    }
}

}