mysql
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
/**
* 数据库访问的通用类
* 基础应用:只返回结果集
* @author Administrator
*
*/
public class DBUtil {
// 四个常量 driver url username password
private static final String URL = "jdbc:mysql://localhost:3306/kf2-2?useOldAliasMetadataBehavior=true";
private static final String USER = "root";
private static final String PASSWORD = "root";
private static final String DRIVER = "com.mysql.jdbc.Driver";
/**
* 定义方法返回一个连接(Connection)对象
*
* @return 返回值就是一个连接对象
*/
private static Connection getConnection() {
Connection conn = null;
try {
Class.forName(DRIVER);//低版本的 必须导入jar包 1.5后可省略
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 一个方法来做增加删除和修改
*
* @param sql 要执行的sql
* @param param 执行的sql中包含的参数的实际值 传入的sql可能带不同的问号
* @return int 表示的是受影响的行
*/
public static int execUpdate(String sql, Object... param) {
Connection conn = getConnection();
PreparedStatement pstmt = null;
int result = 0;
try {
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i + 1, param[i]);
}
result = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放资源
closeAll(null, pstmt, conn);
}
return result;
}
/**
* 一个方法来做查询
*
* @param sql 要执行查询的sql语句
* @param param 要执行sql对应的参数
* @return CachedRowSet 缓存的结果集
* 使用CachedRowSet,JDK用自己安装过配置过的,用myecplise自带的容易出问题
*
* 先演示返回值 结果集ResultSet 会报错
*/
public static CachedRowSet execQuery(String sql, Object... param) {
Connection conn = getConnection();
PreparedStatement pstmt = null