爱站工具,做网站公司选智投未来,买了深圳安居房后悔了,做网站注册有哪些背景
C#中有了DataSet#xff0c;可以把底层数据读取到内存中进行离线操作。操作完成再同步到底层数据源。Java中也提供了类似的功能——RowSet。
和ResultSet相比#xff0c;RowSet默认是可以滚动、可更新、可序列化的结果集合#xff0c;而且作为Javabean使用。并支持离…背景
C#中有了DataSet可以把底层数据读取到内存中进行离线操作。操作完成再同步到底层数据源。Java中也提供了类似的功能——RowSet。
和ResultSet相比RowSet默认是可以滚动、可更新、可序列化的结果集合而且作为Javabean使用。并支持离线操作降低了数据库的负载。
RowSetProvider负责创建RowSetFactory而RowSetFactory则提供了如下方法类创建RowSet实例
1、CacheRowSet createCachedRowSet()创建一个默认的CachedRowSet
2、FilteredRowSet createFilteredRowSet()创建一个默认的FilteredRowSet
3、JdbcRowSet createJdbcRowSet()创建一个默认的JdbcRowSet
4、JoinRowSet createJoinRowSet ()创建一个默认的JoinRowSet
5、WebRowSet createWebRowSet ()创建一个默认的WebRowSet 为了让RowSet能抓取到数据需要为RowSet设置数据库Url、用户名、密码等信息。常用方法如下
1、setUrl(String url)设置URL
2、setUserName(String Name)设置用户名
3、setPassword(String password)设置密码
4、setCommand(String sql)设置SQL语句
5、execute()执行查询 示例代码如下图所示
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.JdbcRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;public class RowSetUtil {private String url;private String user;private String password;public RowSetUtil(String url,String user,String password){this.url url;this.user user;this.password password;}static{try {Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** 查询SQL并修改指定结果* param sql* throws SQLException*/public void queryResult(String sql)throws SQLException{RowSetFactory factory RowSetProvider.newFactory();//使用RowSetProvider创建newFactorytry(JdbcRowSet jdbcRowSet factory.createJdbcRowSet())//使用factory创建JdbcRowSet实例{jdbcRowSet.setUrl(this.url);jdbcRowSet.setUsername(this.user);jdbcRowSet.setPassword(this.password);jdbcRowSet.setCommand(sql);try {jdbcRowSet.execute();//执行操作} catch (Exception e) {// TODO: handle exceptione.printStackTrace();throw new SQLException();}while(jdbcRowSet.next()){ System.out.println(id jdbcRowSet.getLong(1) ;productName jdbcRowSet.getString(1));if (jdbcRowSet.getLong(Id) 218) {jdbcRowSet.updateString(ProductName, 测试);jdbcRowSet.updateRow();}}}}/*** 离线RowSet模式* param sql* throws SQLException*/public void queryResultOffLine(String sql) throws SQLException{try(Connection connection DriverManager.getConnection(this.url, this.user, this.password);Statement statement connection.createStatement();ResultSet rSet statement.executeQuery(sql);){RowSetFactory factory RowSetProvider.newFactory();CachedRowSet cachedRowSet factory.createCachedRowSet();cachedRowSet.populate(rSet);//使用cachedRowSet装填cachedRowSetResultSetMetaData rSetMetaData cachedRowSet.getMetaData();//转化为rSetMetaData才能进行获取列名信息int colCount rSetMetaData.getColumnCount();for (int i 1; i colCount; i) {System.out.println(第 i 列列名是 rSetMetaData.getColumnName(i) ;类型是 rSetMetaData.getColumnTypeName(i));}}}
}