package kunpeng.ui;import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;import javax.swing.table.AbstractTableModel;
import javax.swing.*;public class ResultSetTableModel extends AbstractTableModel {
        private static final long serialVersionUID = 1L;    /**
     * Construction of ResultSetTableModel
     * 
     * @param aResultSet
     *            data obtained from database query. The type of ResultSet must
     *            be TYPE_SCROLL_INSENSITIVE or TYPE_SCROLL_SENSITIVE
     * @param aColumnNames
     *            column names of the JTable.
     */
    public ResultSetTableModel(ResultSet aResultSet, String[]            aColumnNames) {
        rs = aResultSet;
        columnNames = aColumnNames;
        try {
            rsmd = rs.getMetaData();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }    public String getColumnName(int c) {
        if (c < columnNames.length)
            return columnNames[c];
        else
            return "";
    }    public int getColumnCount() {
        try {
            return rsmd.getColumnCount();//返回列数
        } catch (SQLException e) {
            e.printStackTrace();
            return 0;
        }
    }    public int getRowCount() {           //返回行数
        try {
            rs.last();
            return rs.getRow();
        } catch (SQLException e) {
            e.printStackTrace();
            return 0;
        }
    }    public Object getValueAt(int r, int c) {
        try {
            rs.absolute(r + 1);
            return rs.getObject(c + 1);
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }    private ResultSet rs;    private ResultSetMetaData rsmd;    private String[] columnNames;

解决方案 »

  1.   

    //数据库连接
    import kunpeng.ui.ResultSetTableModel;
    import kuneng.SetupDB.SetupDB;/**
     * This class defines some operation of  database.
     * 
     * @author lansoul
     */
    public class KunPengConnection{
        public static Connection getConnection() {
            Connection con = null;
            try {
                Properties props = new Properties();//properties文件是一个文本文件
                FileInputStream fis = new FileInputStream("database.properties");//这个文件保存着数据库属性
                props.load(fis);
                fis.close();            String drivers = props.getProperty("jdbc.drivers");
                Class.forName(drivers);                             //数据库驱动
                String url = props.getProperty("jdbc.url");   
                String username = props.getProperty("jdbc.username");
                String password = props.getProperty("jdbc.password");
                con = DriverManager.getConnection(url, username, password);//建立数据库链接
                return con;
            } catch (SQLException e) {
                JOptionPane.showMessageDialog((JFrame) null,
                        "系统与数据库连接失败! 请重启系统或查看 readme 文件的配置说明!", "系统错误",
                        JOptionPane.ERROR_MESSAGE);
                SetupDB.createDBConfigFile();//SetupDB产生相应配置文件
                SetupDB.setupDB();
                System.exit(1);
                return null;
            } catch (Exception e) {
                System.out.println("数据库配置文件出错!");
                SetupDB.createDBConfigFile();
                System.out.println("重建数据库配置文件, 请重新启动本系统!");
                System.exit(1);
                return null;
            }
        }    public static ResultSetTableModel getTableModel(String query,
                String[] columnNames) {
                Connection con = null;
                ResultSet rs = null;
                ResultSetTableModel model = null;
                try {
                con = getConnection();                                        //声明statement
                Statement stmt = con
                        .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                         ResultSet.CONCUR_READ_ONLY);
                rs = stmt.executeQuery(query);
                model = new ResultSetTableModel(rs, columnNames);
                return model;
              } catch (SQLException e) {
                e.printStackTrace();
                return model;
            }
        }
    }
      

  2.   

    看着这个代码我就晕了,java放下很久了。
      

  3.   

    把你的数据表和获取数据表连接的Connection代码贴出了
    还有,我想问你你这个代码在自己哪里没有出现编译错误么?我这里好多
      

  4.   

    KunPengConnection这个类贴出来,还有数据表创建语句也贴出来
      

  5.   

    package kuneng.SetupDB;import java.io.*;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    import java.util.Scanner;import javax.swing.JTextField;import kunpeng.database.KunPengConnection;/**
     * This class used to build the kunpeng database and some necessary tables.
     * such as admin, contact... You must run this class before kunpeng
     * system.The kunpeng default uses MySQL database. This is a 
     * opensource MySQL used abroadly in Java.If you want to use another 
     * @author lansoul
     */
    public class SetupDB {
    public static boolean setupDB() {
    clearDatabase();
    String createDataBase="CREATE DATABASE IF NOT EXISTS KunPengContactsDataBase ";//创建数据库
        String createTable="CREATE TABLE KunPengUserList(id int unsigned NOT NULL auto_increment,userName varchar(20) NOT NULL,password" +
                     " varchar(20) NOT NULL,userRight varchar(100) NOT NULL,PRIMARY KEY(id))";//创建表
        String dropTable="DROP TABLE IF EXISTS KunPengUserList";//判断表是否存在

    System.out.println("开始创建数据库...");

    // test and get the database connection.
    Connection con = KunPengConnection.getConnection(); // create five tables
    System.out.println("开始创建数据表...");
    int count = 0;                         //步骤统计
    try {
    // create table admin.
    Statement stmt = con.createStatement();
    stmt.execute(createDataBase);
        stmt.execute(dropTable);
        stmt.execute(createTable);
    System.out.println("\n成功创建用户列表!");
    count++; // insert a record to table admin.
    int result = stmt
    .executeUpdate("INSERT INTO KunPengUserList VALUES(NULL, 'admin', '', '管理员')");
    if (result == 1)
    System.out.println("成功插入系统默认管理员admin!");
    count++;
    System.out.println(count); // create table book.
    String createContactTable="CREATE TABLE KunPengContact(id int unsigned NOT NULL auto_increment," +
                       "name varchar(50) NOT NULL,Cellphone varchar(50) NOT NULL,HomePhone varchar(50) NOT NULL," +
                       "Officephone varchar(50) NOT NULL,Xiaolingtong varchar(100) NOT NULL,Fax varchar(50) NOT NULL" +
                       ",QQ varchar(50) NOT NULL,MSN varchar(50) NOT NULL,Skype varchar(50) NOT NULL," +
                       "GTalk varchar(100) NOT NULL,Fetion varchar(50) NOT NULL,Wangwang varchar(50) NOT NULL," +
                       "Post varchar(200) NOT NULL,Address varchar(200) NOT NULL,OfficeAddress varchar(200) NOT NULL," +
                       "Email varchar(200) NOT NULL,HomeMailBox varchar(200) NOT NULL,OfficeMailBox varchar(200) NOT NULL," +
                       "Re varchar(200) NOT NULL,HomeZipCode varchar(50) NOT NULL,OfficeZipCode varchar(50) NOT NULL,Company varchar(200) NOT NULL," +
                       "Department varchar(200) NOT NULL,PRIMARY KEY(id))";


    stmt.execute(createContactTable);
    System.out.println("成功创建联系人列表!");
    count++;
    } catch (SQLException e) {
    e.printStackTrace();
    } finally {
    if (count == 3) {
    System.out.println("\n所有数据库建表操作均已成功完成!");
    //System.out.println("现在可以正常使用" + kunpengAuthorInfo.getLibraryFullName());
    System.out.println("谢谢您的使用!");
    FileOutputStream out = null;
    try {
    Properties prop = new Properties();
    prop.load(new FileInputStream("database.properties"));
    prop.setProperty("jdbc.ok", "true");
    out = new FileOutputStream(
    "database.properties");
    prop.store(out, "kunpeng database connection");
    } catch (IOException e) {
    // do nothing.
    } finally {
    try {
    out.close();
    } catch (Exception e) {
    // do nothing.
    }
    }
    } else {
    System.out.println("\n数据库建表操作没有全部完成!");
    System.out.println("请重新运行本安装程序!");
    }
    try {
    con.close();
    } catch (SQLException e) {
    // do nothing.
    }
    }
    return count == 3 ? true : false;
    } public static void createDBConfigFile() {
    PrintWriter out = null;
    try {
    out = new PrintWriter(new FileWriter("database.properties"));

    out.println("#database connection config");
    out.println("#use the MySQL in default");
    out.println("jdbc.url=jdbc:mysql://localhost:3306/KunPengContactsDataBase?useUnicode=true&characterEncoding=gbk");
    out.println("jdbc.username=root");
    out.println("jdbc.ok=true");
    out.println("jdbc.drivers=com.mysql.jdbc.Driver");
    out.println("jdbc.password=");
    } catch (IOException ex) {
    // do nothing.
    } finally {
    if (out != null) {
    out.close();
    }
    }
    }

    public static void clearDatabase() {
    Connection con = KunPengConnection.getConnection();
    try {
    Statement stmt = con.createStatement();
    stmt.executeUpdate("DROP TABLE KunPengUserList IF EXISTS");
    stmt.executeUpdate("DROP TABLE KunPengContact IF EXISTS");
    } catch (Exception ex) {
    // ex.printStackTrace();
    } finally {
    try {
    con.close();
    } catch (Exception ex) {

    }
    }
    }
    }
      

  6.   

    //kunpengConnectionpackage kunpeng.database;import java.io.FileInputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.*;import kunpeng.ui.ResultSetTableModel;
    import kuneng.SetupDB.SetupDB;/**
     * This class defines some operation of  database.
     * 
     * @author lansoul
     */
    public class KunPengConnection{
    public static Connection getConnection() {
    Connection con = null;
    try {
    Properties props = new Properties();//properties文件是一个文本文件
    FileInputStream fis = new FileInputStream("database.properties");//这个文件保存着数据库属性
    props.load(fis);
    fis.close(); String drivers = props.getProperty("jdbc.drivers");
    Class.forName(drivers);                             //数据库驱动
    String url = props.getProperty("jdbc.url");   
    String username = props.getProperty("jdbc.username");
    String password = props.getProperty("jdbc.password");
    con = DriverManager.getConnection(url, username, password);//建立数据库链接
    return con;
    } catch (SQLException e) {
    JOptionPane.showMessageDialog((JFrame) null,
    "系统与数据库连接失败! 请重启系统或查看 readme 文件的配置说明!", "系统错误",
    JOptionPane.ERROR_MESSAGE);
    SetupDB.createDBConfigFile();//SetupDB产生相应配置文件
    SetupDB.setupDB();
    System.exit(1);
    return null;
    } catch (Exception e) {
    System.out.println("数据库配置文件出错!");
    SetupDB.createDBConfigFile();
    System.out.println("重建数据库配置文件, 请重新启动本系统!");
    System.exit(1);
    return null;
    }
    } public static ResultSetTableModel getTableModel(String query,
    String[] columnNames) {
        Connection con = null;
        ResultSet rs = null;
        ResultSetTableModel model = null;
        try {
    con = getConnection();                                        //声明statement
    Statement stmt = con
    .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
             ResultSet.CONCUR_READ_ONLY);
    rs = stmt.executeQuery(query);
    model = new ResultSetTableModel(rs, columnNames);
    return model;
      } catch (SQLException e) {
    e.printStackTrace();
    return model;
    }
    }
    }
      

  7.   

    MainWindow里面的代码没有贴全,好几个方法和变量都没有,你贴不全代码谁给你满意答案
      setFrameAttributes();setButton() toolbar 都没有
      
      

  8.   

    我昨天的方法没起作用么?
    不应该啊,你再在MainWindow的refresh的方法里面加一个this.pack();试试?
    有可能已经取出来了,但是重绘没起作用.