📄 dataadapter.java
字号:
package com.nc21.exam.dal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
public class DataAdapter {
private final static Logger log = Logger.getLogger(DataAdapter.class);
/**
* 根据传入的sql语句,获取PreparedStatement对象
*
* @param sql
* sql语句
* @return
* @throws SQLException
*/
protected PreparedStatement getPreparedStatement(String sql)
throws SQLException {
DataSource ds = JNDIDataSourceFactory.getDataSource();
Connection conn = ds.getConnection();
PreparedStatement statement = conn.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
// 使游标的精确移动功能有效
ResultSet.CONCUR_UPDATABLE);
return statement;
}
/**
* 执行数据查询操作,返回分页后的结果集。若pageSize小于0,则不分页。
*
* @param sql
* 待执行的sql语句
* @param args
* sql语句中的参数列表
* @param pageSize
* 数据集分页大小
* @param pageNumber
* 数据集分页页号
* @return
*/
public Vector getData(String sql, Vector params, int pageSize,
int pageNumber) {
Vector datas = new Vector();
try {
PreparedStatement ps = getPreparedStatement(sql);
// 设置查询参数
if (params != null) {
for (int i = 0; i < params.size(); i++) {
ps.setObject(i + 1, params.get(i));
}
}
log.info("开始执行查询");
// 执行查询
Pageable rs = new PageableResultSet(ps.executeQuery());
if(pageSize > 0) {
rs.setPageSize(pageSize);
if(pageNumber < 1) {
rs.close();
ps.close();
throw new IllegalArgumentException("pageNumber less than 1");
}
rs.gotoPage(pageNumber);
}
log.info("将数据放入列表");
// 放入缓冲列表
ResultSetMetaData rsmd = rs.getMetaData();
for(int i = 0; i < rs.getPageRowsCount(); i++) {
Vector row = new Vector();
for(int j = 1; j < rsmd.getColumnCount() + 1; j++) {
row.add(rs.getObject(j));
System.out.print(rs.getString(j) + " ");
}
datas.add(row);
System.out.println();
if(!rs.next()) {
break;
}
}
} catch (SQLException e) {
e.printStackTrace();
log.error(e.getMessage());
}
return datas;
}
/**
* 执行数据查询操作,不分页。
*
* @param sql
* 待执行的sql语句
* @param args
* sql语句中的参数列表
* @return
*/
public Vector getData(String sql, Vector args) {
return getData(sql, args, 0, 0);
}
/**
* 执行数据查询操作,不提供参数
*
* @param sql
* 待执行的sql语句
* @return
*/
public Vector getData(String sql) {
return getData(sql, null);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -