我正在尝试使用SELECT作为最后一个执行一些SQL查询。查询具有此结构(示例):
SET @var = "test";
SELECT @var;
首先我需要设置一些变量,然后用它们做一个SELECT并得到结果。这是我的非工作代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class sample2 {
public static void main(String[] args) {
try {
// database connection
Connection dbconn;
Class.forName("com.mysql.jdbc.Driver");
String connection_url = "jdbc:mysql://localhost/db?user=root&allowMultiQueries=true";
dbconn = DriverManager.getConnection(connection_url);
// execute query & get ResultSet
String sql = "SET @var = ?;SELECT @var col;";
PreparedStatement stmt = dbconn.prepareStatement(sql);
stmt.setString(1, "test");
stmt.execute();
ResultSet rs = stmt.getResultSet();
// display data
rs.absolute(1);
System.out.println(rs.getString(1));
// close resources
rs.close();
stmt.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
不幸的是,ResulstSet rs
为空,因此代码以错误java.lang.NullPointerException
结束。我怎么能这样做?
我必须注意到我一直在寻找其他解决方案,例如批处理执行,但在这种情况下我无法将多个查询拆分为单独的查询并以批处理方式执行。