java中游標


package YouBiao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class YouBiaoTest {
    /**
    * 一次只從數據庫中查詢最大maxCount條記錄
    * @param sql 傳入的sql語句
    * @param startNo 從哪一條記錄開始
    * @param maxCount 總共取多少條記錄
    */
    public void getData(String sql,int startNo,int maxCount){
    
     try {
         Connection conn = ConnectionUtil.getConnection();
    //  conn.prepareStatement(sql,游標類型,能否更新記錄);
    //   游標類型:
//        ResultSet.TYPE_FORWORD_ONLY:只進游標
//        ResultSet.TYPE_SCROLL_INSENSITIVE:可滾動。但是不受其他用戶對數據庫更改的影響。
//        ResultSet.TYPE_SCROLL_SENSITIVE:可滾動。當其他用戶更改數據庫時這個記錄也會改變。
    //   能否更新記錄:
//        ResultSet.CONCUR_READ_ONLY,只讀
//        ResultSet.CONCUR_UPDATABLE,可更新
      PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
      //最大查詢到第幾條記錄
      pstat.setMaxRows(startNo+maxCount-1);
      ResultSet rs = pstat.executeQuery();
      //將游標移動到第一條記錄
      rs.first();
    //  游標移動到要輸出的第一條記錄
      rs.relative(startNo-2);
      while(rs.next())
      System.out.println(rs.getInt(1));
     } catch (Exception e) {
      e.printStackTrace();
     }
    }
    /**
    * 從數據庫中查詢所有記錄,然后通過游標來獲取所需maxCount條記錄
    * @param sql 傳入的sql語句
    * @param startNo 從哪一條記錄開始
    * @param maxCount 總共取多少條記錄
    */
    public void getDataFromAll(String sql,int startNo,int maxCount){
    
     try {
      Connection conn = ConnectionUtil.getConnection();
      PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
      ResultSet rs = pstat.executeQuery();
      rs.first();
      rs.relative(startNo-1);
      int i = startNo-1;
      while(i < startNo + maxCount-1 && !rs.isAfterLast()){
      System.out.println(rs.getInt(1));
      i++;
      rs.next();
      }
     } catch (Exception e) {
      e.printStackTrace();
     }
    }
}
package YouBiao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class ConnectionUtil {
    private static String driver;
    private static String uri;
    private static String user;
    private static String password;
 
    static {
        Properties props = new Properties();
        try {
            props.load(ConnectionUtil.class.getClassLoader()
                    .getResourceAsStream("properties文件路徑"));
            driver = props.getProperty("driver");
            uri = props.getProperty("uri");
            user = props.getProperty("user");
            password = props.getProperty("password");
            Class.forName(driver);
        } catch (Exception e) {
        }
    }
 
    /**
     * 獲得Connection對象
     * @return
     * @throws Exception
     */
    public static Connection getConnection() throws Exception {
        Connection con = DriverManager.getConnection(uri, user, password);
        return con;
    }
 
    /**
     * 關閉ResultSet對象
     * @param rs
     */
    public static void closeResultSet(ResultSet rs) {
        if (rs != null)
            try {
                rs.close();
            } catch (SQLException e) {
            }
    }
 
    /**
     * 關閉Statement對象
     * @param stmt
     */
    public static void closeStatement(Statement stmt) {
        if (stmt != null)
            try {
                stmt.close();
            } catch (SQLException e) {
            }
    }
 
    /**
     * 關閉Connection對象
     * @param con
     */
    public static void closeConnection(Connection con) {
        if (con != null)
            try {
                con.close();
            } catch (SQLException e) {
            }
    }


}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM