package org.xwblog.common;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/**
* @author David Xiong
* time: 2014
*/
@SuppressWarnings("unused")
public class ConnDB {
//创建数据库连接
private Connection conn = null;
//创建操作对象
private Statement stmt = null; //正常的sql语句的编译格式
private PreparedStatement pst = null; //sql语句的参数是问号形式的编译形式
//参数集合
private Object[] params=null;
//创建结果集对象
private ResultSet rs = null;
//获取数据库连接的必须(MySQL为例)
private static final String userName="root";
private static final String password="admin";
private static final String url="jdbc:mysql://localhost:3306/dbName";
private static final String driverName="com.mysql.jdbc.Driver";
/**
* 方式一
* 加载数据库驱动程序
*/
static{
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.err.println("数据库驱动加载失败!");
}}
/**
* 建立数据库连接
* @return
*/
public Connection getConnection(){
try {
conn = DriverManager.getConnection(url, userName, password);
}catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
// /**
// * 方式二
// */
// public ConnDB(){
// try {
// Class.forName(driverName);
// conn = DriverManager.getConnection(url, userName, password);
// System.out.println("连接成功");
// } catch(ClassNotFoundException cnfe){
// cnfe.printStackTrace();
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }
/**
* 执行save,update,delete
* @param sql
* @param params
* @return
*/
public int executeUpdate(String sql,Object[] params){
int row=0;
try{
if(params!=null && params.length>0){
pst=conn.prepareStatement(sql);//执行增,删,改语句for(int i=0;i<params.length;i++){
pst.setObject(i+1, params[i]);
}
row=pst.executeUpdate();
}else {
stmt=conn.createStatement();//构建sql语句的发送对象
row=stmt.executeUpdate(sql);//执行增,删,改语句
}
}catch(SQLException e){
e.printStackTrace();
}
return row;
}
/**
* 执行select
* @param sql
* @param params
* @return
*/
public List executeQuery(String sql,Object[] params){
List list = new ArrayList();
try{
if(params!=null&¶ms.length>0){
pst = conn.prepareStatement(sql);
for(int i=0;i<params.length;i++){
pst.setObject(i+1, params[i]);
}
rs = pst.executeQuery();
}else{
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
ResultSetMetaData rsmd = rs.getMetaData();
//获取结果集中一共有多少列
int count = rsmd.getColumnCount();
String [] colName = new String[count];
//将每一列的名字保存在数组中
for(int i=0;i<count;i++){
colName[i] = rsmd.getColumnName(i+1);
}
//循环获取数据集中的信息
while(rs.next()){
Map row = new HashMap();
for(int i=0;i<count;i++){
row.put(colName[i], rs.getObject(colName[i]));
}
list.add(row);
}
}catch(Exception e){
e.printStackTrace();
}finally{
closeAll();
}
return list;
}/**
* 关闭连接
*/
public void closeAll(){
try {
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
无聊编写的一个简单的JDBC封装类
最新推荐文章于 2022-07-22 17:16:07 发布