插入日期时间值会给出错误" 12"附近的语法不正确

时间:2016-04-22 10:30:51

标签: c# sql

DateTime myDateTime =  Convert.ToDateTime(rd2[0].ToString())
values = myDateTime.ToString("yyyy-MM-dd HH:mm:ss") + " , " + rd2[1].ToString()+ " , " + rd2[2].ToString()+ " , " + rd2[3].ToString()+ " , " + rd2[4].ToString()+ " , " + rd2[5].ToString() ;   

我试图在数据类型datetime的sql server表中插入日期2016-04-22 12:58:11但是它给出了错误" 12&#34附近的语法错误;

2 个答案:

答案 0 :(得分:6)

你最终得到的字符串类似于:

2016-04-22 00:00:00,2016-04-22 00:00:00,2016-04-22 00:00:00,2016-04-22 00:00:00

将其插入SQL语句无效。您需要将每个日期用单引号括起来,以便:

'2016-04-22 00:00:00','2016-04-22 00:00:00','2016-04-22 00:00:00','2016-04-22 00:00:00'
无论哪种方式,这都会让你的生活变得困难,并使你的代码受到sql注入和不安全的影响。考虑使用这样的参数。

string exampleSQL = "SELECT * from mydatetable where dateOne = @date1 and dateTwo = @date2";
SqlConnection connection = new SqlConnection(/* connection info */);
SqlCommand command = new SqlCommand(sql, connection);

command.Parameters.Add("@date1", SqlDbType.DateTime).Value = myDateTime;
command.Parameters.Add("@date2", SqlDbType.DateTime).Value = rd2[1];

这样您就不必担心格式化了。系统会自动将@ date1和@ date2替换为您指定的值,它将处理添加SQL的必要结构而无需担心。

答案 1 :(得分:0)

我强烈建议您使用"参数化您的SQL查询" ...例如,您可以在此处查看: http://www.dreamincode.net/forums/topic/268104-the-right-way-to-query-a-database-parameterizing-your-sql-queries/

干杯!