【发布时间】:2017-09-22 12:54:49
【问题描述】:
将 nvarchar 数据类型转换为 datetime 数据类型 导致超出范围的值。
我的代码:
string sqlthem = "INSERT INTO Infosp1 VALUES (@khach,@sp,@sl,@gia,@tg)";
string sqlconvert = "select CONVERT(varchar(20),[Tg], 103) from Infosp1";
SqlCommand cmd = new SqlCommand(sqlthem, con);
cmd.Parameters.AddWithValue("Khach", cbbtenkh.Text);
cmd.Parameters.AddWithValue("Sp", cbbmahang.Text);
cmd.Parameters.AddWithValue("Sl", cbbsl.Text);
cmd.Parameters.AddWithValue("Gia", cbbgia.Text);
cmd.Parameters.AddWithValue("Tg", datetg.Text);
cmd.ExecuteNonQuery();
它出现在.ExecuteNonQuery()
请
【问题讨论】:
-
您确实应该确保参数的类型与数据库中列的类型相匹配,为此您应该首先在代码中将
string值解析为DateTime。也可以考虑not usingAddWithValue -
你能显示在
datetg变量中传递的示例值吗? -
不应该像
cmd.Parameters.AddWithValue("@Khach", cbbtenkh.Text); -
@NikhilAgrawal 不,如果你不这样做,它会添加@。
-
不,您需要执行类似
cmd.Parameters.Add("Tg", SqlDbType.DateTime).Value = DateTime.Parse(datetg.Text);的操作。如果Parse失败,则使用ParseExact输入任何日期格式。