package oper;
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.List;
/*
* 通用数据库访问层, 专管SQL的增删改查四个最基本操作
* author 马飞月
* date 2011-04-19 星期二
*
* 返回值:
* 增/删/改 0表示失败, 1表示成功
* 查询 返回List<Object[]>
*/
public class DbManager{
private Connection CON = null ;
private Statement STA = null ;
private ResultSet RS = null ;
private PreparedStatement PS = null ;
private String MYSQLDRIVER="com.mysql.jdbc.Driver" ;
private String CONTENT="jdbc:mysql://192.168.2.4:3306/excel2mysql";
private String UN="root";
private String UP="root";
/*
* 建立数据库连接资源
*
* 参数详解:
* MYSQLDRIVER 数据库连接驱动
* CONTENT 数据库连接资源
* UN 数据库登录用户名
* UP 数据库登录密码
*/
public DbManager()
{
try {
Class.forName(MYSQLDRIVER);
CON = DriverManager.getConnection(CONTENT,UN,UP);
STA = CON.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 直接执行上层拼接好的非查询SQL语句
* executeNoQuery()
*
* 参数详解:
* sql 上层拼接好的SQL语句
*
* 返回值说明:
* -1 初始值
* 非-1 执行过SQL语句后,记录所影响的行数
*/
public int executeNoQuery(String sql)
{
int rValue=-1;
try {
rValue=STA.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rValue;
}
/*
* 执行上层传递的非查询SQL语句,需要在本层组装SQL语句
* executeNoQuery()
*
* 参数详解:
* sql 上层传递的半成品SQL语句
* params[] 传递的SQL语句中要替换的数据
*
* 返回值说明:
* -1 初始值
* 非-1 执行过SQL语句后,记录所影响的行数
*/
public int executeNoQuery(String sql,Object [] params)
{
int rValue=-1;
try {
PS=CON.prepareStatement(sql);
for(int i=0;i<params.length;i++)
{
PS.setObject(i+1,params[i]);
}
rValue=PS.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return rValue;
}
/*
* 执行上层传递的已拼接好的查询SQL语句
* executeQuery()
*
* 参数详解:
* sql 上层拼接好的SQL语句
*
* 返回值说明:
* List<Object []> 数组对象集
*/
public List<Object []> executeQuery(String sql)
{
List<Object []> objLists=new ArrayList<Object []>();
try {
RS=STA.executeQuery(sql);
ResultSetMetaData rmd=RS.getMetaData();
int colCount=rmd.getColumnCount();
while(RS.next())
{
Object [] objData=new Object[colCount];
for(int i=0;i<colCount;i++)
{
objData[i]=RS.getObject(i+1);
}
objLists.add(objData);
}
} catch (SQLException e) {
e.printStackTrace();
}
return objLists ;
}
/*
* 执行上层传递的查询SQL语句,需要在本层组装SQL语句
* executeQuery()
*
* 参数详解:
* sql 上层传递的半成品SQL语句
* params[] 传递的SQL语句中要替换的数据
*
* 返回值说明:
* List<Object []> 数组对象集
*/
public List<Object []> executeQuery(String sql,Object [] params)
{
List<Object []> objLists=new ArrayList<Object []>();
try {
PS=CON.prepareStatement(sql);
for(int i=0;i<params.length;i++)
{
PS.setObject(i+1,params[i]);
}
RS=PS.executeQuery();
ResultSetMetaData rmd=RS.getMetaData();
int colCount=rmd.getColumnCount();
while(RS.next())
{
Object [] objData=new Object[colCount];
for(int i=0;i<colCount;i++)
{
objData[i]=RS.getObject(i+1);
}
objLists.add(objData);
}
} catch (SQLException e) {
e.printStackTrace();
}
return objLists;
}
/*
* 关闭数据库连接资源
* myClose()
*/
public void myClose()
{
try {
if(RS!=null) {
RS.close();
RS=null;
}
if(STA!=null) {
STA.close();
STA=null;
}
if(PS!=null){
PS.close();
PS=null;
}
if(CON!=null) {
CON.close();
CON=null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
前往页