首先创建可以可以操作数据库的模型用来实现crud
package model;
/*
* 负责对数据库操作的表模型
*/
import java.sql.*;
public class SqlModel {
static Connection con=null;
static PreparedStatement ps=null;
static ResultSet rs=null;
//ResultSet rs2=null;
public SqlModel(){
try {
//加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2、得到连接(指定连接到那个数据源),hostel:数据源名
con=DriverManager.getConnection("jdbc:odbc:hostel","","");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//负责增、删、改的方法
public boolean update(String sql,String []paras){
boolean b=true; //判断是否删除成功
try {
ps=con.prepareStatement(sql); //向数据库发送sql语句
//利用循环给sql语句中的问号赋值
for(int i=0;i<paras.length;i++){
ps.setString(i+1, paras[i]);
}
//得到结果
//int rs=ps.executeUpdate();
ps.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
//负责查询的方法
public ResultSet query(String sql, String []paras){
try {
ps=con.prepareStatement(sql); //向数据库发送sql语句
//利用循环给sql语句中的问号赋值
for(int i=0;i<paras.length;i++){
ps.setString(i+1, paras[i]);
}
//得到结果
rs=ps.executeQuery();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
//关闭数据库连接的方法
public void close(){
try {
if(rs!=null){rs.close();}
if(ps!=null){ps.close();}
if(con!=null){con.close();}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
再创建一个表模型,
package model;
import java.sql.*;
import java.util.*;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class Table extends AbstractTableModel{
SqlModel sm;
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
Vector Hang,Lie;
//查询的方法
public void ShuJuKuLianJie(String sql,String []paras){
try {
Hang=new Vector();
Lie=new Vector();
SqlModel sm=new SqlModel();
rs=sm.query(sql, paras);
//利用ResultSetMetaData可以得到返回列的列名
ResultSetMetaData rsm=rs.getMetaData();
for(int i=0;i<rsm.getColumnCount();i++){
this.Hang.add(rsm.getColumnName(i+1));
}
while(rs.next()){
Vector<String> lie=new Vector<String>();
for(int i=0;i<rsm.getColumnCount();i++){
lie.add(rs.getString(i+1));
}
Lie.add(lie);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(rs!=null){rs.close();};
if(ps!=null){ps.close();};
if(con!=null){con.close();};
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//增删改方法
public boolean ZhengShanGai(String sql,String paras[]){
boolean b=true; //用来返回操作是否成功
SqlModel sm=new SqlModel();
try {
b=sm.update(sql, paras);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
sm.close();
}
return b;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
//得到共有多少列
return this.Lie.size();
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
//得到共有多少行
return this.Hang.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
//得到某行某列的数据
return ((Vector) this.Lie.get(rowIndex)).get(columnIndex);
}
public String getColumnName(int column) {
// TODO Auto-generated method stub
return (String)this.Hang.get(column);
}
}
查询过后别忘记刷新表模型
.setModel();方法
温馨提示:内容为网友见解,仅供参考