⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataadapter.java

📁 在线考试系统
💻 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 + -