使用JAVA中的ResultSet参数进行SELECT查询

时间:2017-09-26 13:42:04

标签: java sql sql-server oracle sql-query-store

我的Oracle数据库的服务器代码包含两个文件(类):Main.javaDBManager.javaDBManager.java包含分别对查询语句执行SQLPRocessingSQLProcess操作的executeUpdateexecuteQuery方法(函数)。转储和获取数据的SQL查询是在Main.java类中编写的。我的数据库包含两个表T1T2。我的代码有两个插入数据的查询:

public void SQLProcessing(String ID, String X, String Y, String XE, String YE){
    db.SQLProcess("INSERT INTO T1 VALUES("+Double.parseDouble(ID)+ "," +Double.parseDouble(X)+ "," +Double.parseDouble(Y)+")");
    db.SQLProcessing("INSERT INTO T2 VALUES("+Double.parseDouble(ID)+ "," +Double.parseDouble(XE)+ "," +Double.parseDouble(YE)+")");                    
}

同样,为了从数据库中获取数据,我使用单个SELECT查询:

public ResultSet SQLProcess(String msg1, String msg2, String msg3, String msg4, String msg5){
    ResultSet rs = db.SQLProcess("SELECT * FROM T1, T2 WHERE T1.ID = T2.ID");
    return rs;
}

执行代码时,出现错误:

Exception in thread "Thread-1" java.lang.NullPointerException at Main.sendTo(Main.java:132) at Main$ServerReceiver.run(Main.java:79)

Main.java的第132行包含while(rs.next()),第79行包含sendTo(socket.getInetAddress());。但是,当我看到数据库时,数据被发送并存储在数据库中。所以,我认为问题出在SELECT查询上。我从不同的线程尝试了很多可能的SELECT查询,我无法解决问题。我猜是正确的吗?任何人都可以为我的案例提供真正的SELECT查询吗?或者错误是从其他来源触发的?

问题在于光标。它为null,我添加了一个if语句:

if(rs!=null) {
        while(rs.next()){//code} 

然后它不会产生任何错误。但是,客户端设备不从服务器获取任何数据。我该如何解决?

2 个答案:

答案 0 :(得分:1)

您是否检查过(T1.ID = T2.ID)ID是否相等?否则,您的queryresponse为空,因为您的where case会拒绝结果。

有时首先会有一个额外的列。那么也许你的数据没有正确插入?

答案 1 :(得分:1)

我认为使用Double或Float作为id目的是一个问题,因为精度总是存在问题。 简单地说,当您保存浮点数时,如7.2可以表示为7.199999或7.199998或7.2000001等,因此ids不会相等。 对于id,我建议使用整数或类似UUID的东西。