나는 DefaultTableModel을 사용하여 채우기를 원하는 JTable을 가지고 있습니다. 안타깝게도 내 출력은 배열로 제공되고 내가 원하는대로 새 행으로 제공되지 않습니다. 아래 코드를보고 더 자세한 설명이 필요한지 물어보십시오! :) 여기Java DefaultDataTable 동적 값
dataTable.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {
DatabaseInteraction.getCityInfo("").get("datas").toArray()
},
DatabaseInteraction.getCityInfo("").get("columns").toArray()));
데이터베이스 상호 작용 기능 :
public static Map<String,List<String>> getCityInfo(String query)
{
if(query.isEmpty()){
query = "SELECT * FROM "+ database+ "." +table;
}
try {
Statement stmt = getConn().createStatement();
ResultSet rs;
rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
//Get Column names
List<String> cNames = new ArrayList();
List<Object> results = new ArrayList<Object>();
for (int i = 1; i <= rsmd.getColumnCount(); i++){
cNames.add(rsmd.getColumnName(i));
}
//Get Data
while (rs.next()) {
List<String> tempResults = new ArrayList();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
tempResults.add(rs.getString(i));
if(i == rsmd.getColumnCount()){
results.add(tempResults);
}
}
}
HashMap map =new HashMap();
map.put("columns",cNames);
map.put("datas",results);
System.out.println(map);
return map;
}
난 내 콘솔에서 얻을 출력은 다음과 같습니다 {열 = [사용자 이름, 암호, 무료, datas = [[HEJ, HEJ 1 [Brugernavn, Password, 1], [Brugernavn1, Password, 0], [test1, test2, 1], [,, 1]]} 나에게 좋았지 만 이전에 말했듯이 배열로 붙이면된다. 하나의 배열이 아니라 새로운 행.
도움을 주셔서 감사합니다. 이렇게하면 열 이름이 잘 추가됩니다! 하지만 데이터를 추가하지는 않습니까? 왜 그런지 알아? :) –
JTable에 새로운 DefaultTableModel을 추가해야하기 때문에 (모델을 생성하기위한 새로운 루프) – mKorbel
@PatrickHansen add Sytem.out.println (rs.getObject (i)); before singleRow.addELement (rs.getObject (i)); 데이터베이스에서 데이터를 제대로 가져 왔는지 확인하십시오. 그렇지 않다면 쿼리와 데이터베이스를 확인해야합니다. – trd3v3lop