如何在java中从MySQL打印特定列

如何在java中从MySQL打印特定列,java,mysql,database,Java,Mysql,Database,我正试图打印出所有列,这些列的路径与我从图像中获得的路径相同。主要问题是path='path'被读取为值为“path”的字符串,而不是path变量中的值。path=不接受不带“”的路径作为值,因此无法打印列。如果我在这里直接插入path='C:\Users….\',它将打印出正确的列 public void getImageInfoFromDatabase(Image image) { String path = image.getFile().getAbsolutePath();

我正试图打印出所有列,这些列的路径与我从图像中获得的路径相同。主要问题是path='path'被读取为值为“path”的字符串,而不是path变量中的值。path=不接受不带“”的路径作为值,因此无法打印列。如果我在这里直接插入path='C:\Users….\',它将打印出正确的列

public void getImageInfoFromDatabase(Image image) {
    String path = image.getFile().getAbsolutePath();
    path = path.replace("\\", "\\\\");

    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        connect = DriverManager.getConnection(url, user, pass);
        Statement statement = connect.createStatement();
        resultSet = statement.executeQuery("SELECT * FROM image_table WHERE path='path'"); 

        while (resultSet.next()) {
            int id = resultSet.getInt(1);
            String title = resultSet.getString(2);
            String path = resultSet.getString(3);
            String tags = resultSet.getString(4);
            String latitude = resultSet.getString(5);
            String longitude = resultSet.getString(6);
            java.util.Date timestamp = resultSet.getTimestamp(7);
            System.out.println(id + " " + title + " " + path + " " + tags + " " + latitude + " " + longitude + " " + timestamp);
        }

    } catch (SQLException | ClassNotFoundException e) {
        System.out.println("Error. ");
        e.printStackTrace();

    }
}

我发现我必须使用PreparedStatement中的setString方法在特定索引处输入一个值。完整的功能代码如下所示:

    public boolean getImageInfoFromDatabase(Image image) {
        boolean success = true;
        String string = image.getFile().getAbsolutePath();
        string = string.replace("\\", "\\\\");

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connect = DriverManager.getConnection(url, user, pass);

            PreparedStatement stmt = connect.prepareStatement("SELECT  * FROM image_table WHERE path = ?");
            stmt.setString(1, string);
            resultSet = stmt.executeQuery();

            while (resultSet.next()) {
                int id = resultSet.getInt(1);
                String title = resultSet.getString(2);
                String path = resultSet.getString(3);
                String tags = resultSet.getString(4);
                String latitude = resultSet.getString(5);
                String longitude = resultSet.getString(6);
                java.util.Date timestamp = resultSet.getTimestamp(7);
                System.out.println(id + " " + title + " " + path + " " + tags + " " + latitude + " " + longitude + " " + timestamp);
                success = true;
            }

        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
            success = false;

        }
        return success;
    }

这是我已经尝试过的,可惜没有成功。如果我输入path='path',它将只搜索路径为“path”的列,而不是我创建的字符串路径。问题是“如何将变量传递给查询”,答案是“使用准备好的语句”。你应该编辑你的文章,清楚地解释这个问题,你的答案可以更小。变量
string
对于图像路径来说是一个非常糟糕的名字。
    public boolean getImageInfoFromDatabase(Image image) {
        boolean success = true;
        String string = image.getFile().getAbsolutePath();
        string = string.replace("\\", "\\\\");

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connect = DriverManager.getConnection(url, user, pass);

            PreparedStatement stmt = connect.prepareStatement("SELECT  * FROM image_table WHERE path = ?");
            stmt.setString(1, string);
            resultSet = stmt.executeQuery();

            while (resultSet.next()) {
                int id = resultSet.getInt(1);
                String title = resultSet.getString(2);
                String path = resultSet.getString(3);
                String tags = resultSet.getString(4);
                String latitude = resultSet.getString(5);
                String longitude = resultSet.getString(6);
                java.util.Date timestamp = resultSet.getTimestamp(7);
                System.out.println(id + " " + title + " " + path + " " + tags + " " + latitude + " " + longitude + " " + timestamp);
                success = true;
            }

        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
            success = false;

        }
        return success;
    }