尝试使用包含11个参数作为输入的函数将记录插入到我的数据库中。功能如下:
public int check_in_visitor(int visitor_id,String date_in, String date_out,
String time_in, int check_in, int check_out, String employer,
String vehicle_number, int manual_entrychk, String time_out)
相应的查询:
String query = "insert into visitor values('"+visitor_id +"','" +
date_in + "','" + date_out + "','" + time_in + "'," + check_in +
",'" + check_out + "'," + employer + ",'" + vehicle_number + "'," +
manual_entrychk + ",'" + time_out + "')
它总是给表达错误的错误!请帮我解决问题
答案 0 :(得分:3)
使用SqlParameter ..
这样你就可以避免sql注入攻击,用'
或"
&封闭数据。其他问题..
String query = "insert into visitor values(@visitor_id,@date_in,@date_out,@time_in,@check_in,@check_out,@employer,@vehicle_number, @manual_entrychk,@time_out)";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.Add(new SqlParameter("visitor_id", visitor_id));
command.Parameters.Add(new SqlParameter("date_in", date_in));
....
command.ExecuteNonQuery();
答案 1 :(得分:0)
您缺少使用双引号关闭查询字符串。
String query = "insert into visitor values('"+visitor_id +"','" + date_in + "','" + date_out + "','" + time_in + "'," + check_in + ",'" + check_out + "'," + employer + ",'" + vehicle_number + "'," + manual_entrychk + ",'" + time_out + "')";
注1:所有VARCHAR
字段都应正确括在single
引号中。
注意2:所有INT
字段不应附加single
引号。
注意3:您的查询对SQL注入的问题是开放的。请使用参数化查询。
除非你提供这种类型,否则它将无法解决问题。
答案 2 :(得分:0)
使用string.format。与string query = string.Format("insert into visitor values ('{0}','{1}'...",vistor_id ...);
类似,此语法更容易排除故障并避免字符串连接。您还应该考虑不使用您的查询中不完全信任的数据(如回复中提到的anirudh),如果这是一个选项。
答案 3 :(得分:0)
如果下面的查询对您没有帮助,请说明返回的错误是什么?
string query = "insert into visitor values ("+visitor_id+ ","+ date_in +","+date_out
+","+time_in+","+check_in+","+check_out+","+employer+","+vehicle_number+","
+manual_entrychk+","+time_out+")";