Java setString()找不到?

时间:2017-05-20 10:36:27

标签: java sql jtable jcombobox setstring

我对编程很新,但我正在为后台应用程序制作一个屏幕。此应用程序的目标是您可以选择工作站名称,当您按下检查状态时,将显示该工作站上锁定器的所有状态。但我遇到的问题是stats setString由于一些奇怪的原因不起作用。我已经尝试了几乎所有的事情我也问过很多人,如果他们能找到问题,即使是那些使用java作为工作的人,但即使他们找不到它。

我在这里唯一可以看到的是?没有得到承认。

我首先尝试将Amersfoort直接插入到sql代码中,但它确实有效。

经过一些测试后,我尝试使用没有连接的普通查询,但它没有用。

之后我尝试在其余代码中找到可能的错误,但我找不到任何错误。

所以我的问题是我在这里做错了什么?

(小免责声明我尝试的不仅仅是这个,但我认为这是无关紧要的)

关于输出屏幕的一些解释:

Akkrum是我在测试期间选择的,但是无关紧要,因为目前我没有使用它。

代码:

public void fetch() {

    try {
        databaseConnection();
        String select = stationSelect.getSelectedItem().toString();
        System.out.println(select);

        String sql = "SELECT l.id, s.station_id, locker_number, locker_code, occupied FROM lockers l JOIN stations s ON l.station_id = s.id WHERE name = ?"; 
        System.out.println(1+ ": "+ sql);

        pstmt  = connection.prepareStatement(sql);
        pstmt.setString(1, "Amersfoort");
        System.out.println(2+ ": " + sql);

        resultSet = pstmt.executeQuery(sql);
        System.out.println(3 + ": " + sql);

        Table.setModel(DbUtils.resultSetToTableModel(resultSet));

    } catch (Exception e) {
        System.out.println(e);
        JOptionPane.showMessageDialog(null, e);
    }
}

输出:

Akkrum的

  1. SELECT l.id,s.station_id,locker_number,locker_code,FROM FROM lockers l JOIN station s ON l.station_id = s.id WHERE name =?

  2. SELECT l.id,s.station_id,locker_number,locker_code,FROM FROM lockers l JOIN station s ON l.station_id = s.id WHERE name =?

  3.   

    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;检查对应的手册   您的MySQL服务器版本是否正确使用语法?'?'在线   1

1 个答案:

答案 0 :(得分:1)

resultSet = pstmt.executeQuery(sql);

错误就在那里。 executeQuery(String)接受原始SQL查询并执行它。相反,您想要执行准备好的查询,因此您只需要调用:

resultSet = pstmt.executeQuery();