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;
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;
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;
}
}
}
还有,我想问你你这个代码在自己哪里没有出现编译错误么?我这里好多
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) {
}
}
}
}
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;
}
}
}
setFrameAttributes();setButton() toolbar 都没有
不应该啊,你再在MainWindow的refresh的方法里面加一个this.pack();试试?
有可能已经取出来了,但是重绘没起作用.