程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> jdbc中的離線數據集入門

jdbc中的離線數據集入門

編輯:關於JAVA

如果在開發應用的時候沒有使用任何持久層框架,而是直接使用jdbc 的api編程的話,大家最長使用的就是ResultSet接口進行數據的讀取了,但是大家也會覺得很不方便,因為ResultSet是在線的數據集,在讀取數據的過程中不能斷開數據庫聯接,只有讀取數據完成後才能close掉相關對象。

其實java也提供了離線的數據集,那就是RowSet接口以及相關的 子接口。而且sun在jdk裡面提供一個默認的實現,而且象oracle這樣比較大型的數據庫驅動裡面也提供自己的RowSet實現。

下面以sun的默認 實現來說明離線數據的使用吧,數據庫為sql Server 2000,連接的數據庫為Northwind。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.RowSet;
import com.sun.rowset.CachedRowSetImpl;
public class RowSetDemo {
public static RowSet query(Connection connection, String sql)
throws SQLException {
//使用sun的默認RowSet實現
CachedRowSetImpl rowset = new CachedRowSetImpl();
//查詢沒有任何變化
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
//這裡就是填充離線集
rowset.populate(rs);
//都可以關閉了,爽吧
rs.close();
statement.close();
return rowset;
}
public static void main(String[] args) throws Exception {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://127.0.0.1:1433;database=Northwind;
user=sa;password=huhuiyu";
Connection connection = DriverManager.getConnection(connectionUrl);
RowSet rs = query(connection, "select * from Customers order by CustomerID;");
//關閉連接也沒有關系了。
connection.close();
//和ResultSet使用一樣。
while (rs.next()) {
System.out.print(rs.getString(1) + " : ");
System.out.println(rs.getString("CompanyName"));
}
}
}運行上面的例子就會將Customers的前兩列的數據顯示出來。其實RowSet還可以完成分頁的功能。請看下面的方法。
public static RowSet query(Connection connection, String sql, int pageSize,
int pageNumber) throws SQLException {
CachedRowSetImpl rowset = new CachedRowSetImpl();
//要是可以滾動的結果集
Statement statement = connection.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = statement.executeQuery(sql);
//設定分頁大小
rowset.setPageSize(pageSize);
//計算一下開始游標位置
int skip=(pageNumber - 1) * pageSize + 1;
//可以填充了
rowset.populate(rs, skip);
rs.close();
statement.close();
return rowset;
}
public static void main(String[] args) throws Exception {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://127.0.0.1:1433;database=Northwind;
user=sa;password=huhuiyu";
Connection connection = DriverManager.getConnection(connectionUrl);
//分頁查詢
RowSet rs = query(connection, "select * from Customers order by CustomerID;",5,2);
//關閉連接也沒有關系了。
connection.close();
//和ResultSet使用一樣。
while (rs.next()) {
System.out.print(rs.getString(1) + " : ");
System.out.println(rs.getString("CompanyName"));
}
}

如果你不使用持久層,那麼使用離線數據集可以很好的解決分頁和數據庫連接的問題。希望這篇入門的教程能夠幫助到你。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved