[英]Java return string object
我有一個數據庫函數,該函數檢索數據,然后填充一個jtable。 我需要更改此函數,以便它從Object[][]
的數據庫中返回數據。 如何才能做到這一點? (我不確定如何在每次行迭代中存儲數據-以下代碼中的while循環部分)。
public void data() {
// clear table then load information
DefaultTableModel model=(DefaultTableModel)table.getModel();
model.getDataVector().removeAllElements();
table.repaint();
ResultSet rs=null;
Statement st=null;
try {
Class.forName("java.sql.Driver");
_con = DriverManager.getConnection(_url,_user,_pwd);
st = _con.createStatement();
String query = "SELECT * FROM table";
rs = st.executeQuery(query);
while (rs.next()) {
String d1 = rs.getString("record1");
String d2 = rs.getString("record2");
model.addRow(new Object[]{d1,d2});
}
} catch (Exception e) {
} finally {
try {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (_con != null) {
_con.close();
}
} catch (SQLException ex) {
}
}
}
我認為此方法不是一個好主意,原因有幾個:
Connection
並將其傳入。 ResultSet
和Statement
不應是該類的成員變量。 使它們在方法本地。 只需更改方法以返回所需內容即可,而不是void
。 我不會使用Object [][]
; 我更喜歡地圖列表或封裝行的其他類型。 使用列名稱作為Map中的鍵。
這是OP要求的一些代碼,是的,OP應該注意duffymo的建議-我完全同意。
Object[] result = null;
try{
Class.forName("java.sql.Driver");
_con = DriverManager.getConnection(_url,_user,_pwd);
st=_con.createStatement();
String query="SELECT COUNT(*) cnt FROM table";
rs=st.executeQuery(query);
Integer size = null;
if (rs.next()){
size = rs.getInteger("cnt");
}
if (size != null){
Object[] result = new Object[size];
query="SELECT * FROM table";
rs=st.executeQuery(query);
int i = 0;
while(rs.next())
{
String d1=rs.getString("record1");
String d2=rs.getString("record2");
result[i++] = new Object[]{d1,d2};
}
}
}
catch(Exception e)
{
//TODO handle exceptions, e.g. rethrow
//throw new RuntimeException(e);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.