⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdbcadapter.java

📁 课程设计:ATM Project源码
💻 JAVA
字号:
/* JDBCAdapter.java	 * Copyright 2002 MonkeyStar SoftWare, Inc. All rights reserved. * An adaptor, transforming the JDBC interface to the TableModel interface. * @author Wujun, Student Number:09800134 */import java.util.Vector;import javax.swing.table.AbstractTableModel;import javax.swing.event.TableModelEvent;import java.util.Date;import java.util.Locale;import java.text.*;import java.sql.*;public class JDBCAdapter extends AbstractTableModel {    Connection          connection;    Statement           statement;    ResultSet           resultSet;    String[]            columnNames = {};    Vector		rows = new Vector();    ResultSetMetaData   metaData;    Locale CurLocale=new Locale("zh","CN");    String Url;	NumberFormat curformater=NumberFormat.getCurrencyInstance(CurLocale);    SimpleDateFormat DateFormatter=new SimpleDateFormat("yyyy/MM/dd");    public JDBCAdapter(String url) {    	url="jdbc:odbc:"+url;    	this.Url=url;        try {            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");            connection = DriverManager.getConnection(url, "", "");            statement = connection.createStatement();        }        catch (ClassNotFoundException ex) {            System.err.println("Cannot find the database driver classes.");            System.err.println(ex);        }        catch (SQLException ex) {            System.err.println("Cannot connect to this database.");            System.err.println(ex);        }     }public void Refresh(String query){        try {            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");            connection = DriverManager.getConnection(this.Url, "", "");            statement = connection.createStatement();        }        catch (ClassNotFoundException ex) {            System.err.println("Cannot find the database driver classes.");            System.err.println(ex);        }        catch (SQLException ex) {            System.err.println("Cannot connect to this database.");            System.err.println(ex);        }    executeQuery(query);}    public void executeQuery(String query) {        if (connection == null || statement == null) {            System.err.println("There is no database to execute the query.");            return;        }        try {            resultSet = statement.executeQuery(query);            metaData = resultSet.getMetaData();            int numberOfColumns =  metaData.getColumnCount();            columnNames = new String[numberOfColumns];            // Get the column names and cache them.            // Then we can close the connection.            for(int column = 0; column < numberOfColumns; column++) {                columnNames[column] = metaData.getColumnLabel(column+1);            }            // Get all rows.            rows = new Vector();            while (resultSet.next()) {                Vector newRow = new Vector();                for (int i = 1; i <= getColumnCount(); i++) {                //newRow.addElement(getColumnClass(i).toString());                //newRow.addElement(resultSet.getObject(i).getClass().toString());	            newRow.addElement(resultSet.getObject(i));                }                rows.addElement(newRow);            }            //  close(); Need to copy the metaData, bug in jdbc:odbc driver.            fireTableChanged(null); // Tell the listeners a new table has arrived.        }        catch (SQLException ex) {            System.err.println(ex);        }    }    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    //    //////////////////////////////////////////////////////////////////////////    // MetaData    public String getColumnName(int column) {    	String tmpName;    	        if (columnNames[column] != null) {        	tmpName=columnNames[column];        	if (columnNames[column].toLowerCase().trim().equals("buytime"))        	tmpName="时间";        	if (columnNames[column].toLowerCase().trim().equals("cardid"))        	tmpName="客户卡号";        	if (columnNames[column].toLowerCase().trim().equals("ip"))        	tmpName="IP地址";        	if (columnNames[column].toLowerCase().trim().equals("product"))        	tmpName="商品名";        	if (columnNames[column].toLowerCase().trim().equals("amount"))        	tmpName="购买量";        	if (columnNames[column].toLowerCase().trim().equals("cash"))        	tmpName="金额(元)";        	if (columnNames[column].toLowerCase().trim().equals("productid"))        	tmpName="商品编号";        	if (columnNames[column].toLowerCase().trim().equals("requestip"))        	tmpName="请求机IP地址";        	if (columnNames[column].toLowerCase().trim().equals("requestnum"))        	tmpName="需求量";        	if (columnNames[column].toLowerCase().trim().equals("requesttime"))        	tmpName="请求时间";            return tmpName;        } 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.TIME:            return java.sql.Time.class;        case Types.DATE:            return java.util.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.            return DateFormatter.format(value);        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");            // statement.executeQuery(query);        }        catch (SQLException e) {            //     e.printStackTrace();            System.err.println("Update failed");        }        Vector dataRow = (Vector)rows.elementAt(row);        dataRow.setElementAt(value, column);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -