📄 jdbcadapter.java
字号:
import java.util.Vector;import java.sql.*;import javax.swing.table.AbstractTableModel;import javax.swing.event.TableModelEvent;public class JDBCAdapter extends AbstractTableModel { Connection connection; Statement statement; ResultSet resultSet; String[] columnNames = {}; Vector rows = new Vector(); ResultSetMetaData metaData; public JDBCAdapter(String url, String driverName, String user, String passwd) { try { Class.forName(driverName); connection = DriverManager.getConnection(url, user, passwd); statement = connection.createStatement(); } catch (ClassNotFoundException ex) { System.err.println(ex); } catch (SQLException ex) { System.err.println(ex); } } public boolean updateQuery(String query){ if (connection == null || statement == null) { return false; } try { statement.execute(query); metaData = resultSet.getMetaData(); return true; } catch (SQLException ex) { System.err.println(ex); return false; } } public boolean executeQuery(String query) { if (connection == null || statement == null) { return false; } try { resultSet = statement.executeQuery(query); metaData = resultSet.getMetaData(); int numberOfColumns = metaData.getColumnCount(); columnNames = new String[numberOfColumns]; for(int column = 0; column < numberOfColumns; column++) { columnNames[column] = metaData.getColumnLabel(column+1); } rows = new Vector(); while (resultSet.next()) { Vector newRow = new Vector(); for (int i = 1; i <= getColumnCount(); i++) { newRow.addElement(resultSet.getObject(i)); } rows.addElement(newRow); } return true; } catch (SQLException ex) { System.err.println(ex); return false; } } public Vector GetVector(){ return rows; } public void close() throws SQLException { System.out.println("Closing db connection"); resultSet.close(); statement.close(); connection.close(); } protected void finalize() throws Throwable { close(); super.finalize(); } ////////////////////////////////////////////////////////////////////////// // // Implementation of the TableModel Interface // ////////////////////////////////////////////////////////////////////////// public String getColumnName(int column) { if (columnNames[column] != null) { return columnNames[column]; } else { return ""; } } public Class getColumnClass(int column) { int type; try { type = metaData.getColumnType(column+1); } catch (SQLException e) { return super.getColumnClass(column); } switch(type) { case Types.CHAR: case Types.VARCHAR: case Types.LONGVARCHAR: return String.class; case Types.BIT: return Boolean.class; case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: return Integer.class; case Types.BIGINT: return Long.class; case Types.FLOAT: case Types.DOUBLE: return Double.class; case Types.DATE: return java.sql.Date.class; default: return Object.class; } } public boolean isCellEditable(int row, int column) { try { return metaData.isWritable(column+1); } catch (SQLException e) { return false; } } public int getColumnCount() { return columnNames.length; } // Data methods public int getRowCount() { return rows.size(); } public Object getValueAt(int aRow, int aColumn) { Vector row = (Vector)rows.elementAt(aRow); return row.elementAt(aColumn); } public String dbRepresentation(int column, Object value) { int type; if (value == null) { return "null"; } try { type = metaData.getColumnType(column+1); } catch (SQLException e) { return value.toString(); } switch(type) { case Types.INTEGER: case Types.DOUBLE: case Types.FLOAT: return value.toString(); case Types.BIT: return ((Boolean)value).booleanValue() ? "1" : "0"; case Types.DATE: return value.toString(); // This will need some conversion. default: return "\""+value.toString()+"\""; } } public void setValueAt(Object value, int row, int column) { try { String tableName = metaData.getTableName(column+1); // Some of the drivers seem buggy, tableName should not be null. if (tableName == null) { System.out.println("Table name returned null."); } String columnName = getColumnName(column); String query = "update "+tableName+ " set "+columnName+" = "+dbRepresentation(column, value)+ " where "; // We don't have a model of the schema so we don't know the // primary keys or which columns to lock on. To demonstrate // that editing is possible, we'll just lock on everything. for(int col = 0; col<getColumnCount(); col++) { String colName = getColumnName(col); if (colName.equals("")) { continue; } if (col != 0) { query = query + " and "; } query = query + colName +" = "+ dbRepresentation(col, getValueAt(row, col)); } System.out.println(query); System.out.println("Not sending update to database"); } catch (SQLException e) { System.err.println("Update failed"); } Vector dataRow = (Vector)rows.elementAt(row); dataRow.setElementAt(value, column); } public void executeDel(String query) throws SQLException { // TODO Auto-generated method stub statement.executeUpdate(query); } public void executeInser(String query) throws SQLException { // TODO Auto-generated method stub statement.executeUpdate(query); } public int totalSNumber(){ int total=0; try { resultSet = statement.executeQuery("SELECT * FROM StudentInf"); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { while(resultSet.next()) total++; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return total; } public int totalHNumber(){ int total=0; String f="",n=""; try { resultSet = statement.executeQuery("SELECT * FROM StudentInf order by SAD"); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { while(resultSet.next()){ f=resultSet.getString("SAD"); if(!f.equals(n)) total++; n=f; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return total; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -