Java类对数据库结果集的处理(源码)
JDBC提供了很多连接数据库的方法,同时也提供了ResultSet方法对数据库结果集的可滚动查询,可更新查询。
举例数据库:Mysql
声明:这两个类我都已经测试通过,如果运行出错,请仔细检查,源码方法一定没问题。问题可能会出在表数据的属性,和JDBC版本是否支持。
下面是源码:
可滚动查询源码:(对数据进行了输出控制)
 import java.sql.*;
import java.sql.*;
 public class TestScrollResultSet{
public class TestScrollResultSet{ public static void main(String orgs[]){
    public static void main(String orgs[]){ Connection conn=null;
        Connection conn=null; try{
    try{ Class.forName("com.mysql.jdbc.Driver");
       Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/people";
       String url="jdbc:mysql://localhost:3306/people"; conn=DriverManager.getConnection(url,"username","password");
       conn=DriverManager.getConnection(url,"username","password"); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
       Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs=stmt.executeQuery("select * from guestmessage");
       ResultSet rs=stmt.executeQuery("select * from guestmessage"); while(rs.next()){
       while(rs.next()){ showOneRow(rs);
            showOneRow(rs); }
       }          System.out.println("---------------------------------");
       System.out.println("---------------------------------"); rs.last();
       rs.last(); showOneRow(rs);
       showOneRow(rs); rs.first();
       rs.first(); showOneRow(rs);
       showOneRow(rs); rs.beforeFirst();
       rs.beforeFirst(); rs.next();
       rs.next(); showOneRow(rs);
       showOneRow(rs); rs.absolute(2);
       rs.absolute(2); showOneRow(rs);
       showOneRow(rs); }catch(Exception e){
}catch(Exception e){ e.printStackTrace();
   e.printStackTrace(); }finally{
}finally{ try{
   try{ if(conn!=null){
      if(conn!=null){ conn.close();
        conn.close(); }
      } }catch(Exception e){
   }catch(Exception e){ e.printStackTrace();
   e.printStackTrace(); }
   } }
  } }
} public static void showOneRow(ResultSet rs)throws SQLException{
public static void showOneRow(ResultSet rs)throws SQLException{ System.out.print("第"+rs.getRow()+"行");
            System.out.print("第"+rs.getRow()+"行");  System.out.print("\t"+rs.getInt(1));
            System.out.print("\t"+rs.getInt(1)); System.out.print("\t"+rs.getString(2));
            System.out.print("\t"+rs.getString(2)); System.out.print("\t"+rs.getString(3));
            System.out.print("\t"+rs.getString(3)); System.out.println();
            System.out.println(); }
} }
}
可更新查询源码:(可以通过此类直接更改数据库数据,但并不推荐,只作为功能介绍)
 import java.sql.*;
import java.sql.*;
 public class TestUpdatableResultSet{
public class TestUpdatableResultSet{ public static void main(String orgs[]){
    public static void main(String orgs[]){ Connection conn=null;
        Connection conn=null; try{
    try{ Class.forName("com.mysql.jdbc.Driver");
       Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/people";
       String url="jdbc:mysql://localhost:3306/people"; conn=DriverManager.getConnection(url,"username","password");
       conn=DriverManager.getConnection(url,"username","password"); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
       Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs=stmt.executeQuery("select id,name,url from guestmessage");
       ResultSet rs=stmt.executeQuery("select id,name,url from guestmessage"); //ResultSet rs=stmt.executeQuery("select t.* from guestmessage");
       //ResultSet rs=stmt.executeQuery("select t.* from guestmessage"); //更新前结果集中的数据
        //更新前结果集中的数据 while(rs.next()){
       while(rs.next()){ showOneRow(rs);
            showOneRow(rs); }
       }          //更新和删除记录
       //更新和删除记录 rs.beforeFirst();
       rs.beforeFirst(); while(rs.next()){
       while(rs.next()){ String name=rs.getString("name").trim();//.trim()过滤掉空格
         String name=rs.getString("name").trim();//.trim()过滤掉空格 if(name.equals("施杨")){
         if(name.equals("施杨")){ String sal=rs.getString("url");
            String sal=rs.getString("url"); rs.updateString("url",sal+"pppp");
            rs.updateString("url",sal+"pppp"); rs.updateRow();
            rs.updateRow(); }else if(name.equals("dd")){
         }else if(name.equals("dd")){ rs.deleteRow();
            rs.deleteRow(); }
         } }
       } //插入新记录
       //插入新记录 rs.moveToInsertRow();
       rs.moveToInsertRow(); rs.updateInt("id",19);
       rs.updateInt("id",19); rs.updateString("name","hahahahhaha");
       rs.updateString("name","hahahahhaha"); rs.updateString("url","ssssssss");
       rs.updateString("url","ssssssss"); rs.insertRow();
       rs.insertRow(); rs.close();
       rs.close(); //结果集更新后数据库中数据
       //结果集更新后数据库中数据 System.out.println("---------------------------------");
       System.out.println("---------------------------------"); rs=stmt.executeQuery("select * from guestmessage");
       rs=stmt.executeQuery("select * from guestmessage"); while(rs.next()){
       while(rs.next()){ showOneRow(rs);
          showOneRow(rs); }
       } rs.close();
       rs.close(); }catch(Exception e){
}catch(Exception e){ e.printStackTrace();
   e.printStackTrace(); }finally{
}finally{ try{
   try{ if(conn!=null){
      if(conn!=null){ conn.close();
        conn.close(); }
      } }catch(Exception e){
   }catch(Exception e){ e.printStackTrace();
   e.printStackTrace(); }
   } }
  } }
} public static void showOneRow(ResultSet rs)throws SQLException{
public static void showOneRow(ResultSet rs)throws SQLException{ System.out.print("\t"+rs.getInt(1));
            System.out.print("\t"+rs.getInt(1)); System.out.print("\t"+rs.getString(2));
            System.out.print("\t"+rs.getString(2)); System.out.print("\t"+rs.getString(3));
            System.out.print("\t"+rs.getString(3)); System.out.println();
            System.out.println(); }
} }
}
实现这两个类要更改类中有关数据库数据,然后就可以完美运行了。
施杨出品 !!!
!!!
作者:Steven(Steven's Think out)
出处:http://shiyangxt.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 
 
                    
                

 
     
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号