![](/img/trans.png)
[英]Exception in thread “main” java.sql.SQLException while running jdbc program?
[英]SQLException while running a query with JDBC
在我的程序中,我使用JDBC執行一些SQL查詢。 當我為該特定查詢運行程序時,出現以下錯誤:
SQLException:線程“主”中的異常java.sql.SQLException:at 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塊是錯誤的。 這樣寫:
catch(SQLException e) {
e.printStackTrace();
}
您的方式將所有有用的信息從堆棧跟蹤中清除。 您無法調試其他錯誤操作。
進行更改,重新運行代碼,並讀取堆棧跟蹤。 它會告訴您真正的問題是什么。
要糾正的事情很多:
PreparedStatement
和綁定而不是串聯String
。 我不確定,但是看起來您有三個SQL查詢:
我能正確閱讀嗎? 如果是,為什么不像這樣在一個查詢中這樣做呢?
DELETE
FROM transformed_table
WHERE payer_id IN (SELECT DISTINCT payer_id FROM transactions)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.