string SqlStr = string.Format("insert into O_Tracker " +
"(order_id,client_name,job_name,note_,s_date,e_date,paid,pickup_status,sub_orders) values " +
"({0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')"
,s.Order_Id, s.Client_Name, s.Job_Name, s.Note, s.Start_Date,
s.End_Date, s.Paid, s.Ready2Pickup, subOrdersPath);
我一直从调试器中得到这个错误:
查询表达式中的语法错误(缺少运算符)
我无法弄清楚这里有什么问题。 谢谢你的帮助。
更新 我已经将代码更改为带参数的格式,并且出现“mismatch criteria expression access”错误。
string SqlStr ="insert into O_Tracker " +
"(order_id,client_name,job_name,note_,s_date,e_date,paid,pickup_status,sub_orders) values(@order_id,@client_name,@job_name,@note_,@s_date,@e_date,@paid,@pickup_status,@sub_orders)";
OleDbCommand cmd = new OleDbCommand();
cmd.Parameters.AddWithValue("@order_id", s.Order_Id);
cmd.Parameters.AddWithValue("@client_name", s.Client_Name);
cmd.Parameters.AddWithValue("@job_name", s.Job_Name);
cmd.Parameters.AddWithValue("@note_", s.Note);
cmd.Parameters.AddWithValue("@s_date", s.Start_Date);
cmd.Parameters.AddWithValue("@e_date", s.End_Date);
cmd.Parameters.AddWithValue("@paid", s.Paid);
cmd.Parameters.AddWithValue("@pickup_status", s.Ready2Pickup);
cmd.Parameters.AddWithValue("@sub_orders", subOrdersPath);
try
{
cnn.Open();
cmd.Connection = cnn;
cmd.CommandText = SqlStr;
cmd.ExecuteNonQuery();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cnn.Close();
}
摘要
在将特定表字段添加到文件路径时出现问题。 这里的人注意到我的代码很容易受到SQL注入的攻击,所以我已经完成了他们的建议并修复了我的代码。
之后发生了另一个问题并且只是修复它,因为日期字段不匹配。
谢谢大家的帮助! :)
答案 0 :(得分:2)
看起来您的字符串')'
被视为一个单独的字符串:
1001gssgsgsgsgs.txt')'
话虽如此,正如评论中所说,你必须使用SqlParameters。两者都是为了防止Sql注入和分隔你的字符串。像这样:
SqlCommand command = new SqlCommand('insert into ... values (..., @sub_order)', connection);
command.Parameters.Add("@sub_order", yourSubOrderString);