java - 如何在java中的where子句中传递变量的值?

标签 java sql sql-server jdbc

我正在尝试执行一个包含where条件的sql查询。但每当我执行查询时,它都会给我 java.lang.NullPointerException 。请帮助我!

我正在使用 mssql 和 java

dbURL = "jdbc:sqlserver://ip:portnumber;databaseName=abc";
        username = "abc";
        password = "abc";

        //Load MS SQL JDBC Driver
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(dbURL,username,password);

        //Creating statement object
        st = con.createStatement();
        selectquery = "select * from abc where TradeType = '"+tradepair+"'";
        rs = st.executeQuery(selectquery);

        while (rs.next()) {

            getpair = rs.getString("TradeType");
            dbTradePair.add(getpair);

        }
        System.out.println("Pairs :-"+dbTradePair);

当执行“selectquery”时,我得到“java.lang.NullPointerException”。 我希望我能以正确的格式执行 sql 查询。有人可以帮我解决这个问题吗?

最佳答案

像这样(编辑 - 之后正确关闭资源):

//Load MS SQL JDBC Driver
    try {

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    } catch (ClassNotFoundException e) {

        System.out.println(e.getMessage());

    }

    final String dbURL = "jdbc:sqlserver://ip:portnumber;databaseName=abc";
    final String username = "abc";
    final String password = "abc";

    Connection  con = null;
    PreparedStatement preparedStatement = null;
    final String selectquery = "select * from abc where TradeType = ?";
    try {
        con = DriverManager.getConnection(dbURL,username,password);
        preparedStatement = con.prepareStatement(selectquery);
        preparedStatement.setString(1, tradepair);

        // execute select SQL stetement
        ResultSet rs = preparedStatement.executeQuery();

        while (rs.next()) {

            String tradeType = rs.getString("TradeType");

            System.out.println("tradeType : " + tradeType);
        }

    } catch (SQLException e) {

        System.out.println(e.getMessage());

    } finally {

        if (preparedStatement != null) {
            preparedStatement.close();
        }

        if (con != null) {
            con.close();
        }

    }

关于java - 如何在java中的where子句中传递变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54329540/

相关文章:

java - 部署时出现无法解释的 Tomcat LifeCycleException

linux - 运行 java bash 脚本时出现核心转储问题

按星期几进行 SQL 分组

MySQL修剪(连接...)

mysql - 使用 SQL 汇总 2 个不同表中的 3 列

sql-server - SQL Server 2008 Express 到 SQLite

java - Tomcat 向后兼容吗?

java - 如何从 Tomcat 6 中的 Web 应用程序内部登录

sql - 合并 TVP + 更新记录时对列求和

sql - 如何删除SQL中两个单词之间的空格(更多两个空格)