Your browser does not support JavaScript and this site utilizes JavaScript to build content and provide links to additional information. You should either enable JavaScript in your browser settings or use a browser that supports JavaScript in order to take full advantage of this site.
1 24 25 package com.mckoi.jfccontrols; 26 27 import javax.swing.table.*; 28 import java.sql.*; 29 30 39 40 public class ResultSetTableModel extends AbstractTableModel { 41 42 45 private ResultSet result_set; 46 47 50 private ResultSetMetaData meta_data; 51 52 55 private int row_count; 56 57 61 private boolean preserve_table_structure; 62 63 64 67 public ResultSetTableModel(ResultSet result_set) { 68 super(); 69 preserve_table_structure = false; 70 if (result_set != null) { 71 updateResultSet(result_set); 72 } 73 else { 74 clear(); 75 } 76 } 77 78 public ResultSetTableModel() { 79 this(null); 80 } 81 82 88 public void setPreserveTableStructure(boolean status) { 89 preserve_table_structure = status; 90 } 91 92 95 public void updateResultSet(ResultSet result_set) { 96 try { 97 boolean fire_structure_change = true; 98 if (this.result_set != null) { 99 if (preserve_table_structure) { 103 ResultSetMetaData old_meta_data = this.meta_data; 105 ResultSetMetaData new_meta_data = result_set.getMetaData(); 106 int col_count = new_meta_data.getColumnCount(); 107 if (old_meta_data.getColumnCount() == col_count) { 108 boolean different = false; 109 for (int i = 1; i < col_count + 1 && !different; ++i) { 110 different = 111 (!old_meta_data.getColumnName(i).equals( 112 new_meta_data.getColumnName(i)) || 113 !old_meta_data.getTableName(i).equals( 114 new_meta_data.getTableName(i)) || 115 !old_meta_data.getSchemaName(i).equals( 116 new_meta_data.getSchemaName(i))); 117 } 118 fire_structure_change = different; 119 } 120 } 121 this.result_set.close(); 122 } 123 124 this.result_set = result_set; 126 this.meta_data = result_set.getMetaData(); 127 128 if (result_set.last()) { 132 row_count = result_set.getRow(); 133 } 134 else { 135 row_count = 0; 136 } 137 138 if (fire_structure_change) { 139 fireTableStructureChanged(); 140 } 141 else { 142 fireTableDataChanged(); 143 } 144 145 } 146 catch (SQLException e) { 147 throw new Error ("SQL Exception: " + e.getMessage()); 148 } 149 } 150 151 154 public void clear() { 155 if (result_set != null) { 157 try { 158 result_set.close(); 159 } 160 catch (SQLException e) { 161 e.printStackTrace(); 163 } 164 } 165 result_set = null; 166 meta_data = null; 167 row_count = 0; 168 fireTableStructureChanged(); 169 } 170 171 173 public int getRowCount() { 174 return row_count; 175 } 176 177 public int getColumnCount() { 178 if (meta_data != null) { 179 try { 180 return meta_data.getColumnCount(); 181 } 182 catch (SQLException e) { 183 throw new Error ("SQL Exception: " + e.getMessage()); 184 } 185 } 186 return 0; 187 } 188 189 public String getColumnName(int column) { 190 if (meta_data != null) { 191 try { 192 return meta_data.getColumnLabel(column + 1); 193 } 194 catch (SQLException e) { 195 throw new Error ("SQL Exception: " + e.getMessage()); 196 } 197 } 198 throw new Error ("No columns!"); 199 } 200 201 public Object getValueAt(int row, int column) { 202 if (result_set != null) { 203 try { 204 result_set.absolute(row + 1); 205 return result_set.getObject(column + 1); 206 } 207 catch (SQLException e) { 208 throw new Error ("SQL Exception: " + e.getMessage()); 209 } 210 } 211 throw new Error ("No contents!"); 212 } 213 214 } 215
| Popular Tags
|