在Java Swing的JTable显示数据库中的记录

在这里我说到两个方面的内容,一个是java GUI(用户图形界面),一个是JDBC(JAVA访问数据库)。两个方面的内容.

我们先说JDBC,然后将查询的内容显示到JTable中


要访问数据库,当然要导入驱动包,我这里使用的是mysql,所以导入的是msyql的驱动程序包mysql-connector-java-3.1.12-bin.jar.

并加入至classpath或导入lib目录中.

然后我建立一个访问数据库的工具类,里面有连接数据库,关闭数据库。操作数据库的方法函数


//插入字符串
private String insertSQL="insert into customer(account,password,cname,cbalance,birthday) values(?,?,?,?,?)";
//更新字符串
private String updateSQL="update customer set account=?,password=?,cname=?,cbalance=?,birthday=? where id=?";
//删除字符串
private String deleteSQL="delete from customer where id=?";
//查询字符串
private static String selectSQL="select * from customer";


连接数据库对象:

   Class.forName("com.mysql.jdbc.Driver");
  conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123");//注意还要加入异常捕获


//关闭数据库连接对象
public void close(){
 if(conn!=null){
  try {
   conn.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  conn=null;
 }
}


下面讲解一个查询数据库的内容至ArrayList对象中的方法:

//查询的记录存储到集合对象中
public ResultSet getRS(String selectSQL){
 try{
  ps=conn.prepareStatement(selectSQL);
  rs=ps.executeQuery();
 }catch(Exception evt){
  evt.printStackTrace();
 }
 return rs;
}



下面在GUI类中利用上面的查询结果al。

  String[] col = { "序号", "帐号", "密码","真实姓名","金额","出生日期" };
  DefaultTableModel mm = new DefaultTableModel(col, 0); // 定义一个表的模板
  try {

   ResultSet rs =new ConnDBUtils().getRS("select * from customer");// 将查询得到的结果集给rs
   while (rs.next()) {
    String id = String.valueOf(rs.getInt("id"));
    String account = rs.getString("account");
    ---------------------------------------------------------

    ----------------------------------------------------------


    String[] str_row = {id, account,password,cname,cbalance,birthday}; // 将一行的数据存在str_row
              // 字符串数组里
    mm.addRow(str_row);// 添加在表模板中
   }
   jtable.setModel(mm);// 将jtable这个表 设置为刚刚定义的模板

上面的这段代码,可以加到button的actionPerformed()中,这样就可以实现动态加载,比如用户点击查询,就出来查询的结果显示出来.

当然ConnDBUtils类中还提拱了一些插入,删除,更新等操作.

//插入操作
public String  insertData(customer cust){//将对象属性值插入
 try{
  ps=conn.prepareStatement(insertSQL);
  ps.setString(1, cust.getAccount());
  ps.setString(2, cust.getPassword());
  ps.setString(3,cust.getCname());
  ps.setDouble(4,cust.getCbalance());
  ps.setString(5,cust.getBirthday());
  flag=ps.executeUpdate();
  if(flag>0){
   str="插入操作成功";
  }else{
   str="插入操作失败,请重试";
  }
 }catch(Exception evt){
  evt.printStackTrace();

 }
 return str;
}

//更新操作
public String  updateData(customer cust){
 try{
  ps=conn.prepareStatement(this.updateSQL);

  ps.setString(1, cust.getAccount());
  ps.setString(2, cust.getPassword());
  ps.setString(3,cust.getCname());
  ps.setDouble(4,cust.getCbalance());
  ps.setString(5,cust.getBirthday());

  ps.setInt(6,cust.getId());
  //主键值传入
  if(ps.executeUpdate()>0){
   str="更新操作成功";
  }else{
   str="更新操作失败";
  }

 }catch(Exception evt){
  evt.printStackTrace();
 }
 return str;
}

//删除操作
public String deleteData(int id){
 //根据主键即可
        try{
         ps=conn.prepareStatement(this.deleteSQL);
         ps.setInt(1, id);
         if(ps.executeUpdate()>0){
          str="删除操作成功";
         }
         else{
          str="删除操作成功";
         }
        }catch(Exception evt){
         evt.printStackTrace();
        }
 return str;
}
当然一个完整的查询至集合的方法是:

//查询的记录存储到集合对象中
public ArrayList getData(String sqlStr){
 ArrayList al=new ArrayList();
 try{
     ps=conn.prepareStatement(sqlStr);
  rs=ps.executeQuery();
  while(rs.next()){
   customer cust=new customer();
   cust.setId(rs.getInt("id"));
   cust.setAccount(rs.getString("account"));
   cust.setPassword(rs.getString("password"));
   cust.setBirthday(rs.getString("birthday"));
   cust.setCbalance(rs.getDouble("cbalance"));
   cust.setCname(rs.getString("cname"));
   al.add(cust);
  }

 }catch(Exception evt){
  evt.printStackTrace();
 }
 return al;
}

原创地址:http://blog.csdn.net/haha_mingg/article/details/4504851


你可能感兴趣的:(java,DB,swing,J2SE)