使用日期格式更新数据库

时间:2015-03-23 14:21:26

标签: c# sql-server winforms sqlconnection

我在论坛中找到了与此问题相关的一些主题,但他们没有帮助我。我只想用日期值更新我的数据库。这些来自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();

现在当我离开“'”时(“',co​​nvert /”',104))他告诉我2013年(我的约会的开始)附近的语法不正确。当我像上面那样写它然后我得到: 字符串或二进制数据将被截断。

这是什么?我还尝试将日期转换为:

  for (int i = 0; i < typeDelDate.Count; i++)
            {
                unFormatedDate = date[i];
                formatedDate = unFormatedDate.ToString("dd/MM/yyyy");
                dateFormat.Add(formatedDate);
            }

但我仍然遇到同样的错误。如何更新我的值?列类型为“date”。

1 个答案:

答案 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();

不要通过添加字符串将值传递给查询 - 如果可能,应始终使用参数。它可以为您节省很多转换为正确值(不同的语言环境等)的麻烦,它更安全,并且有助于提高性能。