可視化Swing中JTable控件綁定SQL數據源的兩種辦法深刻解析。本站提示廣大學習愛好者:(可視化Swing中JTable控件綁定SQL數據源的兩種辦法深刻解析)文章只能為提供參考,不一定能成為您想要的結果。以下是可視化Swing中JTable控件綁定SQL數據源的兩種辦法深刻解析正文
在 MyEclipse 的可視化 Swing 中,有 JTable 控件。
JTable 用來顯示和編纂慣例二維單位表。
那末,若何將 數據庫SQL中的數據綁定至JTable中呢?
在這裡,供給兩種辦法。
JTable的結構辦法
經由過程查閱Java的API,可以可以獲得JTable的兩個主要的結構辦法:
JTable(Object[][] rowData, Object[] columnNames)
結構一個 JTable 來顯示二維數組 rowData 中的值,其列稱號為 columnNames。
JTable(TableModel dm)
結構一個 JTable,應用數據模子 dm、默許的列模子和默許的選擇模子對其停止初始化。
以下,我們就經由過程這兩個結構辦法來將JTable綁定到SQL數據庫。
需要的預備任務
1、有一個可供綁定的數據庫。
2、在可視化Swing中拖沓出去一個Jtable控件。
辦法一:經由過程二維數組綁定
該辦法用到的結構辦法為:
JTable(Object[][] rowData, Object[] columnNames)
結構一個 JTable 來顯示二維數組 rowData 中的值,其列稱號為 columnNames。
構建二維數組rowData
經由過程上節博文“預編譯”的進修,我們曾經可以或許將SQL數據庫讀取至ResultSet 中。
《JDBC之PreparedStatement類中預編譯的綜合運用解析》
回想以下:
/** 查詢並前往記載集 */
public ResultSet getResultSet(String sql, Object[] objArr){
getConnection();
try {
pStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
if(objArr!=null && objArr.length>0) {
for (int i = 0; i < objArr.length; i++) {
pStatement.setObject(i+1, objArr[i]);
}
}
rSet = pStatement.executeQuery();
//list = resultSetToList(rs);
} catch (SQLException e) {
e.printStackTrace();
} finally {
//close();
}
return rSet;
}
【注】只是與上節博客的辦法名分歧罷了。。
如今,我們為了將ResultSet 轉化為二維數組,寫以下辦法:
/** 把成果集轉成Object[][] */
public Object[][] resultSetToObjectArray(ResultSet rs) {
Object[][] data = null;
try {
rs.last();
int rows = rs.getRow();
data = new Object[rows][];
ResultSetMetaData md = rs.getMetaData();//獲得記載集的元數據
int columnCount = md.getColumnCount();//列數
rs.first();
int k = 0;
while(rs.next()) {
System.out.println("i"+k);
Object[] row = new Object[columnCount];
for(int i=0; i<columnCount; i++) {
row[i] = rs.getObject(i+1).toString();
}
data[k] = row;
k++;
}
} catch (Exception e) {
}
return data;
}
並將這兩個辦法存至文件UserDAO.java中。
在Swing地點的Java文件中先實例化UserDAO:
UserDAO userDAO = new UserDAO();
便可將SQL數據轉化為二維數組:
Object[][] dataObjects = userDAO.resultSetToObjectArray(userDAO.getResultSet(
"select id,username,password from t_userr", null));
構建列稱號 columnNames
這個比擬簡略,只須要將列稱號寫入String數組便可。
String[] tableStrings = { "id", "username", "password" };
構建JTable的Model:
jTable1.setModel(new DefaultTableModel(dataObjects, tableStrings));
全體代碼視圖:
辦法二:經由過程Model綁定該辦法用到的結構辦法為:
JTable(TableModel dm)
結構一個 JTable,應用數據模子 dm、默許的列模子和默許的選擇模子對其停止初始化。
進入 JTable 控件的掌握面板,點擊model。
選擇Model來自代碼。
填寫 model 的辦法途徑:包名.Java文件名.辦法名。
為了挪用便利,建議將辦法設置為靜態辦法。
在方才設置的途徑下寫入Model的辦法,留意其前往類型為TableModel。
辦法的寫法與下面的年夜同小異,不再贅述。