java - JAVA 中带有 ResultSet 参数的 SELECT 查询

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

我的 Oracle 数据库的服务器代码包含两个文件(类),即:Main.javaDBManager.javaDBManager.java包含SQLPRocessingSQLProcess执行 executeUpdate 的方法(函数)和executeQuery分别与查询语句进行操作。用于转储和获取数据的 SQL 查询写入 Main.java类(class)。我的数据库包含两个表 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 查询吗?或者错误是由其他来源触发的?

问题出在光标上。它为空,我添加了 if声明为:

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

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

最佳答案

您是否检查过 (T1.ID = T2.ID) 是否存在彼此相等的 ID?否则,您的查询响应为空,因为您的 where 案例拒绝结果。

有时,第一位会有一个额外的列。那么也许您的数据没有正确插入?

关于java - JAVA 中带有 ResultSet 参数的 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428162/

相关文章:

java - Tomcat下war文件中的index.jsp

SQL:来自 2 个非连接表的单选查询

java - 如何从java调用更新SqlTable值的存储过程

sql - 如何获得时间戳的平均值?数据库

mysql - 使用其他 2 个表的差异创建第 3 个表 SQL

c# - 必须声明标量变量@pp

sql-server - 请咨询: SQL Server Identity vs Unique Identifier keys when using Entity Framework

Java - 从方法返回一个数组到main

java - 如何使用参数映射和构建器实例化对象?

java - jvisualvm:卡在 “Loading Heap Dump...” 屏幕上