【发布时间】:2017-04-25 06:27:31
【问题描述】:
我是 Java 新手,我的工作都与 JDBC 相关——关于插入和处理数据。总的来说它工作正常。
为了减少代码,我使用单个try{} catch()block 来编写多个JDBC Statements 和Prepared Statements。
示例代码:
public void dashboardReports()
{
try {
String total_stock_value="select sum(price*closingstock)as tsv from purchase_table";
Statement ps_tsv=connection.createStatement();
ResultSet set_tsv=ps_tsv.executeQuery(total_stock_value);
if(set_tsv.next())
{
total_stock.setText(set_tsv.getString("tsv"));
}
String tota_sales="select sum(INVOICE_VALUE) as iv from PARTYWISE_ACCOUNTS_LEDGER";
Statement st_total_sales=connection.createStatement();
ResultSet set_total_sales=st_total_sales.executeQuery(tota_sales);
if(set_total_sales.next())
{
total_sales.setText(set_total_sales.getString("iv"));
}
String total_purchases="select sum(CP_INVOICEVALUE)as cpi from COMPANY_PAYMENTS";
Statement st_tps=connection.createStatement();
ResultSet set_tps=st_tps.executeQuery(total_purchases);
if(set_tps.next())
{
total_purchases_label.setText(set_tps.getString("cpi"));
}
String total_collectionss="select sum(PAYMENT_REC) as payrec from PARTYWISE_ACCOUNTS_LEDGER";
Statement ps_toco=connection.createStatement();
ResultSet set_toco=ps_toco.executeQuery(total_collectionss);
if(set_toco.next())
{
total_collections.setText(set_toco.getString("payrec"));
}
String total_payments="select sum(CP_PAYMENTREC) as paid from COMPANY_PAYMENTS";
Statement ps_topa=connection.createStatement();
ResultSet set_topa=ps_topa.executeQuery(total_payments);
if(set_topa.next())
{
total_payments_label.setText(set_topa.getString("paid"));
}
} catch (Exception e) {
// TODO: handle except
}
}
那么这是处理的好方法还是其他方法?
到目前为止,我的代码运行良好,这种方法将来会不会出现问题。
【问题讨论】:
-
如果此代码运行良好,您应该将其提交到我们的Code Review 姊妹网站。
-
我看到的最大问题是你没有关闭你的资源,如果你使用 try-with-resources 问题会更小,你会自动使用更小的范围 try-块。顺便说一句:您的代码效率低下:您查询 2 个表 2 次,而您只能查询这两个表一次。