在SQL中搜索特定的CHAR

时间:2017-03-24 13:12:55

标签: sql command

我有一个数据库表,一列中包含多个字符串。他们持有车牌号码。如果我搜索1 il获得它找到的第一个注册。我想设置它,以便我必须输入完整的字符串,如果我不应该说不找到。这是我的代码。我确定它只是需要改变它的SQL命令。

public Car getCar(String searchLicense) {
    Car foundCar = new Car();
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url + dbName, userName, password);
        statement = conn.createStatement();
        resultSet = statement
                .executeQuery("select * from eflow.registration where cLicense like '%" + searchLicense + "%'");

        while (resultSet.next()) {
            foundCar = new Car(resultSet.getInt("cID"), resultSet.getString("cLicense"),
                    resultSet.getInt("cJourneys"), resultSet.getString("cUsername"),
                    resultSet.getString("cPassword").toString());
        }
        conn.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return foundCar;
}

2 个答案:

答案 0 :(得分:1)

如果您需要确切的字符串,则需要删除'%'在LIKE过滤器中。 你的代码应该是:

cLicense like '" + searchLicense + "'

'%'通配符放在您拥有的参数之前和之后,使您可以搜索中间包含searchLicense值的任何字符串,而无需检查该字符串之前或之后的内容。

答案 1 :(得分:0)

您应该使用参数化查询。 Bobby Tables: A guide to preventing SQL injection

然后使用=代替like

select * from eflow.registration where cLicense = @searchLicense