带有变量的ResultSet

时间:2014-08-19 21:10:55

标签: java mysql jdbc

好的,基本上我有这个代码:

resultSet = statement.executeQuery("select * from FEEDBACK.COMMENTS");
writeResultSet(resultSet);

private void writeResultSet(ResultSet resultSet) throws SQLException {
    System.out.println("jestem w writeresultset");
    // resultSet is initialised before the first data set
    while (resultSet.next()) {
        // it is possible to get the columns via name
        // also possible to get the columns via the column number
        // which starts at 1
        // e.g., resultSet.getSTring(2);
        String id = resultSet.getString("id");
        String user = resultSet.getString("IMIE");
        String website = resultSet.getString("NAZWISKO");
        String summary = resultSet.getString("ADRES");
        String date = resultSet.getString("EMAIL");
        String comment = resultSet.getString("TELEFON");
        String opisso = resultSet.getString("OPIS");

        JTextField myOutput = new JTextField(1600);
        myOutput.setText("id w bazie danych to " + id + " imie to " + user 
            + " nazwisko to " + website + " adres to " + summary + " email to " 
            + date + " teelefon to " + comment + " opis to " + opisso);

        add(myOutput);     
    }
}    

我想要实现的目标是:

resultSet = statement.executeQuery("select * from FEEDBACK.COMMENTS 
    where NAZWISKO LIKE " variable );
writeResultSet(resultSet);

我想通过已经定义的变量进行搜索,但是我已经卡住了,不知道如何这样做。

2 个答案:

答案 0 :(得分:3)

使用PreparedStatement

String nazwisko = ...
String query = "select * from FEEDBACK.COMMENTS where NAZWISKO LIKE ?";
PreparedStatement pstmt = con.prepareStatement(query);
pstmt.setString(1, nazwisko);
ResultSet rs = pstmt.execute();
while (resultSet.next()) {
    //...
}

如果您需要为LIKE使用通配符,请选择以下选项之一:

nazwisko = nazwisko + "%";
nazwisko = "%" + nazwisko;
nazwisko = "%" + nazwisko + "%";

答案 1 :(得分:0)

up,你的代码有很多奇怪的错误:

无法找到符号变量con或不兼容类型boolean无法转换为resultset。

我试过这个:但执行

时出错
    preparedStatement = connect
      .prepareStatement("select * from FEEDBACK.COMMENTS where NAZWISKO= ? ; ");
      preparedStatement.setString(1, surname3);

while (resultSet.next()) {

    String id = resultSet.getString("i

d");
          String user = resultSet.getString("IMIE");
          String website = resultSet.getString("NAZWISKO");
          String summary = resultSet.getString("ADRES");
          String date = resultSet.getString("EMAIL");
          String comment = resultSet.getString("TELEFON");
          String opisso = resultSet.getString("OPIS");


          JTextField myOutput = new JTextField(1600);
    myOutput.setText("id w bazie danych to " + id + " imie to " + user + " nazwisko to " + website + " adres to " + summary + " email to " + date + " teelefon to " + comment + " opis to " + opisso);



         add(myOutput);
    }

错误: 查询没问题,但错误出现在这里"而(resultSet.next())"

 SEVERE: null
java.lang.NullPointerException
    at jdbcexample.Main.readDataBase(Main.java:416)
    at jdbcexample.Main$7.mousePressed(Main.java:346)