在我的程序中,我使用JDBC执行一些SQL查询。当我为这个特定查询运行程序时,我收到以下错误:
SQLException:线程“main”java.sql.SQLException中的异常:在TransformData.main(TransformData.java:213)
以下是代码的这一部分:
try
{
dbcon = DriverManager.getConnection(url,"username","password");
stmt = dbcon.createStatement();
stmt1 = dbcon.createStatement();
stmt13 = dbcon.createStatement();
stmt14 = dbcon.createStatement();
String sql1 = "SELECT DISTINCT payer_id FROM transactions ORDER BY payer_id";
rs1 = stmt1.executeQuery(sql1);
while (rs1.next())
{
Integer payer_id = rs1.getInt("payer_id");
payer_ids.add(payer_id);
}
rs1.close();
stmt1.close();
for(int i = 0; i < payer_ids.size(); i++)
{
String sql13 = "SELECT COUNT(*) AS counter, isCOrporate FROM transformed_table WHERE payer_id = "+payer_ids.get(i)+" ";
rs5 = stmt13.executeQuery(sql13);
while(rs5.next())
{
int counter = rs5.getInt("counter");
int isCorporate = rs5.getInt("isCorporate");
if ((counter - payer_ids.get(i).intValue() - isCorporate) < 1)
{
String sql14 = "DELETE FROM transformed_table WHERE payer_id = "+payer_ids.get(i)+" ";
stmt14.executeUpdate(sql14);
}
}
}
rs5.close();
stmt13.close();
stmt14.close();
dbcon.close();
}
catch(SQLException e)
{
System.out.print("SQLException: ");
throw new SQLException(errorMessages);
}
第213行是这一行:throw new SQLException(errorMessages);
在catch中。
我试图找到可能抛出此异常的内容。有人可以帮忙吗?
答案 0 :(得分:3)
这段代码有很多问题,但这里有相关的提示:你的catch块是错误的。这样写:
catch(SQLException e) {
e.printStackTrace();
}
您的方式从堆栈跟踪中排出所有有用的信息。你无法调试你做错的其他事情。
进行更改,重新运行代码并读取堆栈跟踪。它会告诉你你的真正问题是什么。
要纠正的事情很多:
PreparedStatement
和绑定而不是连接String
。 我不确定,但看起来你有三个SQL查询:
我能正确阅读吗?如果是的话,为什么不在一个查询中这样做呢?
DELETE
FROM transformed_table
WHERE payer_id IN (SELECT DISTINCT payer_id FROM transactions)