我在论坛中找到了与此问题相关的一些主题,但他们没有帮助我。我只想用日期值更新我的数据库。这些来自Textfile(例如编写为2014-10-02)。现在我尝试了这个(在其他线程中提到过):
String connectionQuery = form1.conString.Text;
SqlConnection connection = new SqlConnection(connectionQuery);
SqlCommand sqlComInsert = new SqlCommand(@"INSERT INTO [" + form1.tableName.Text + "] ([" + form1.CusId.Text + "],["+ form1.date.Text +"],[" + form1.cusName.Text + "]) VALUES('" + cusId[i] + "',convert(date,'" + date[i] + "',104),'" + "','" + cusName[i] + "')", connection);
sqlComInsert.Connection.Open();
sqlComInsert.ExecuteNonQuery();
sqlComInsert.Connection.Close();
现在当我离开“'”时(“',convert /”',104))他告诉我2013年(我的约会的开始)附近的语法不正确。当我像上面那样写它然后我得到: 字符串或二进制数据将被截断。
这是什么?我还尝试将日期转换为: for (int i = 0; i < typeDelDate.Count; i++)
{
unFormatedDate = date[i];
formatedDate = unFormatedDate.ToString("dd/MM/yyyy");
dateFormat.Add(formatedDate);
}
但我仍然遇到同样的错误。如何更新我的值?列类型为“date”。
答案 0 :(得分:1)
使用参数化查询而不是将字符串拼接在一起:
var commandText = "insert (column) values (@dt);";
var cmd = new SqlCommand(commandText, connection);
cmd.Parameters.AddWithValue("dt", DateTime.ParseExact(dateString, "yyyy-MM-dd"));
cmd.ExecuteNonQuery();
不要通过添加字符串将值传递给查询 - 如果可能,应始终使用参数。它可以为您节省很多转换为正确值(不同的语言环境等)的麻烦,它更安全,并且有助于提高性能。