简体   繁体   English

如何在 executeQuery 方法中编写 sql 查询?

[英]How to write sql query in an executeQuery method?

I have an account_holder table with a field userId and I have a data set as data.I want to select only that record from account_holder which having userId as data[3] ie (4 field of data set).我有一个带有字段 userId 的 account_holder 表,并且我有一个数据集作为数据。我只想 select 来自 account_holder 的记录,其中 userId 作为data[3]即(数据集的 4 个字段)。 I am writing query as:我将查询写为:

Statement st = con.createStatement();

ResultSet rs = st.executeQuery("select * from account_holder where userID = 'data[3]' ");

But my rs is null the entry not gets in to the ResultSet object rs.但我的 rs 是null条目没有进入 ResultSet object rs。 Plz tell me the correct way to write sql query with where clause inside the executeQuery() method.请告诉我使用 executeQuery() 方法中的 where 子句编写 sql 查询的正确方法。

As the first post said this is one way of handling this:正如第一篇文章所说,这是处理此问题的一种方法:

     try {
        Statement statement = connection.createStatement(); // Creating Statement

        // Executing Statement
        ResultSet resultSet = statement.executeQuery("SELECT * FROM account_holder WHERE userID = '" + data[3] + "'");

        // Check if result set has entries
        if (resultSet.first()) // If so the user already exists
            System.out.println("User already exists! " + resultSet.getString("userID"));
        else // If not the user does not exist
            System.out.println("User does not exist!");

        // Clean up
        resultSet.close();
        statement.close();
        connection.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }

But in your context I would actually recommend using a PreparedStatement :但在您的上下文中,我实际上建议使用PreparedStatement

    try {
        // Making statement
        PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM account_holder WHERE userID = ?");
        preparedStatement.setString(1, data[3]); // Set String for the first question mark in Query

        ResultSet resultSet = preparedStatement.executeQuery(); // Executing the Prepared Statement

        // Check if result set has entries
        if (resultSet.first()) // If so the user already exists
            System.out.println("User already exists! " + resultSet.getString("userID"));
        else // If not the user does not exist
            System.out.println("User does not exist!");

        // Clean up
        resultSet.close();
        preparedStatement.close();
        connection.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }

You have to only change the query in the executeQuery method您只需更改 executeQuery 方法中的查询

example:例子:

Statement st = con.createStatement(); 
ResultSet rs = st.executeQuery("select * from account_holder where userID = '"+data[3]+"' ");

or you can also run the following command:或者您也可以运行以下命令:

ResultSet rs = st.executeQuery("select * from account_holder where userID = "+data[3]+"");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM