{"C';附近有不正确的语法."}…错误调试
本文关键字:quot 语法 调试 错误 不正确 | 更新日期: 2023-09-27 17:58:44
SqlConnection conn = new SqlConnection("Server=ILLUMINATI;" +
"Database=DB;Integrated Security= true");
SqlCommand comm = new SqlCommand(
"Insert into FileUpload ('FilePath','TypeId','UploadedBy','UploadedDate')
values (" + savePath + "," + typeid + "," + NAME + "," + DateTime.Now+ ")", conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
它给出了一个错误:
{"'C'附近的语法不正确。"}
谁能告诉我这个错误吗。
您必须在值字符串周围加上单个''
引号,而不是在列名周围加上引号
试试这个
SqlCommand comm = new SqlCommand(
"Insert into FileUpload (FilePath,TypeId,UploadedBy,UploadedDate)
values ('" + savePath + "','" + typeid + "','" + NAME + "',"
假设typeID
是字符串,如果不是,不要将''
放在它周围
它给出错误的原因正如Haris所说——你把单引号放错了地方。
然而,通过将引号放在不同的位置来"修复"这一问题是一个非常糟糕的想法。相反,您应该使用参数化查询:
SqlCommand comm = new SqlCommand
("Insert into FileUpload (FilePath, TypeId, UploadedBy, UploadedDate)" +
" values (@savePath, @typeid, @name, @now)", conn);
comm.Parameters.AddWithValue("@savePath", savePath);
comm.Parameters.AddWithValue("@typeid", typeid);
comm.Parameters.AddWithValue("@name", NAME);
comm.Parameters.AddWithValue("@now", DateTime.Now);
通过将数据表示为数据而不是"代码"(SQL(的一部分,您可以避免担心转换(例如日期格式(和,从而避免SQL注入攻击。
有关更多详细信息,请参阅SqlCommand.Parameters
文档(或搜索"参数化查询"(。
将具有varchar和datetime类型的列括在一个引号中。
SqlCommand comm = new SqlCommand(
"Insert into FileUpload ('FilePath','TypeId','UploadedBy','UploadedDate')
values ('" + savePath + "'," + typeid + ",'" + NAME + "','" + DateTime.Now+ "')",
conn);