SQL查询异常问题

时间:2013-12-09 05:04:59

标签: c# sql sql-server visual-studio

尝试使用包含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 + "')

它总是给表达错误的错误!请帮我解决问题

4 个答案:

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