/*
* 该类实现了接口DatabaseDao2_0,由于处理各种数据库操作
*/
package com.yiduedu.wzl.dao;
import java.beans.PropertyVetoException;
import java.sql.*;
import java.util.*;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class SqlStatement2_0 implements DatabaseDao2_0 {
@SuppressWarnings("unchecked")
private Map initParams=null;//数据库连接池的所有参数
private DataSource dataSource=null;//Java连接池
@SuppressWarnings("unchecked")
public SqlStatement2_0(Map initParams){
try {
this.initParams=initParams;//初始化数据库连接池的所有参数
initeDataSourceC3PO();//初始化数据苦连接池
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 初始化 DataSource c3po 数据库连接池
*/
private void initeDataSourceC3PO()
{
if(this.dataSource==null){
try {
ComboPooledDataSource combooPooledDataSource=new ComboPooledDataSource();
combooPooledDataSource.setDriverClass(String.valueOf(this.initParams.get("classForName")));
combooPooledDataSource.setJdbcUrl(String.valueOf(this.initParams.get("url")));
combooPooledDataSource.setUser(String.valueOf(this.initParams.get("userName")));
combooPooledDataSource.setPassword(String.valueOf(this.initParams.get("password")));
/*
* 默认情况之下在初使化的时候创建3个connection对象
* 我们设置在初始化的时候创建(this.initConnectionCount)个connection对象
*/
combooPooledDataSource.setInitialPoolSize( (Integer.valueOf(String.valueOf(this.initParams.get("innitConCount")))).intValue() );
//设置最大连接个数
combooPooledDataSource.setMaxPoolSize( (Integer.valueOf(String.valueOf(this.initParams.get("maxConCount")))).intValue() );
//设置最长等待时间(this.maxWaitingTime) s
combooPooledDataSource.setMaxIdleTime( (Integer.valueOf(String.valueOf(this.initParams.get("maxwaitingTime")))).intValue() );
this.dataSource=combooPooledDataSource;//赋值
} catch (PropertyVetoException e) {
e.printStackTrace();
}
}
}
/*
* (non-Javadoc)
* @see com.yd.star.dao.DatabaseDao2_0#getManyQuery(java.lang.String, java.lang.Object[])
* 以下所有方法的注释见接口DatabaseDao2_0
*/
@SuppressWarnings("unchecked")
public List<List> getManyRecord(String sqlStatement,Object[] param)
{
ResultSet result = null;
PreparedStatement preStatement = null;
Connection connection = null;
try {
connection=dataSource.getConnection();
preStatement=connection.prepareStatement(sqlStatement);
for(int n=0;n<param.length;n++){
preStatement.setObject(n+1,param[n]);
}
result=preStatement.executeQuery();
ResultSetMetaData resultSetMetaData=result.getMetaData();
int clomnCount = resultSetMetaData.getColumnCount();//得到字段数量
List<List> savaResult=new Vector<List>();
List sava=null;
while(result.next())
{
sava=null;
sava=new Vector();
for(int n=1;n<=clomnCount;n++){
sava.add(result.getObject(n));
}
savaResult.add(sava);
}
if(savaResult.size()==0){
return null;
}
return savaResult;
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeNormal(result, preStatement, connection);
}
return null;
}
/*
* (非 Javadoc)得到单条记录类型为List
* @see com.yiduede.wzl.dao.DatabaseDao2_0#getSingleRecord(java.lang.String, java.lang.Object[])
*/
@SuppressWarnings("unchecked")
public List getSingleRecord(String sqlStatement,Object[] param)
{
ResultSet result = null;
PreparedStatement preStatement = null;
Connection connection = null;
try {
connection=dataSource.getConnection();
preStatement=connection.prepareStatement(sqlStatement);
for(int n=0;n<param.length;n++){
preStatement.setObject(n+1,param[n]);
}
result=preStatement.executeQuery();
ResultSetMetaData resultSetMetaData=result.getMetaData();
int clomnCount = resultSetMetaData.getColumnCount();//得到字段数量
List savaResult=new Vector();
if(result.next()){
for(int n=1;n<=clomnCount;n++){
savaResult.add(result.getObject(n));
}
}
if(savaResult.size()==0){
return null;
}
return savaResult;
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}finally{
this.closeNormal(result, preStatement, connection);
}
return null;
}
/*
* (非 Javadoc)得到单条记录类型为Map
* @see com.yiduede.wzl.dao.DatabaseDao2_0#getSingleMapRecord(java.lang.String, java.lang.Object[])
*/
@SuppressWarnings("unchecked")
public Map getSingleMapRecord(String sqlStatement,Object[] param){
ResultSet result = null;
PreparedStatement preStatement = null;
Connection connection = null;
try {
connection=dataSource.getConnection();
preStatement=connection.prepareStatement(sqlStatement);
for(int n=0;n<param.length;n++){
preStatement.setObject(n+1,param[n]);
}
result=preStatement.executeQuery();
ResultSetMetaData resultSetMetaData=result.getMetaData();
int clomnCount = resultSetMetaData.getColumnCount();
Map theMap=new TreeMap();
if(result.next()){
for(int n=1;n<=clomnCount;n++){
theMap.put(resultSetMetaData.getColumnName(n), result.getObject(n));
}
}
if(theMap.size()==0){
return null;
}
return theMap;
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.closeNormal(result, preStatement, connection);
}
return null;
}
/*
* (非 Javadoc)得到单个字段,类型为List
* @see com.yiduede.wzl.dao.DatabaseDao2_0#getSingleCloumn(java.lang.String, java.lang.Object[])
*/
@SuppressWarnings("unchecked")
public List getSingleCloumn(String sqlStatement,Object[] param)
{
ResultSet result = null;
PreparedStatement preStatement = null;
Connection connection = null;
try {
connection=dataSource.getConnection();
preStatement=connection.prepareStatement(sqlStatement);
for(int n=0;n<param.length;n++){
preStatement.setObject(n+1,param[n]);
}
result=preStatement.executeQuery();
List savaResult=new Vector();
while(result.next())
{
savaResult.add(result.getObject(1));
}
if(savaResult.size()==0){
return null;
}
return savaResult;
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}finally{
this.closeNormal(result, preStatement, connection);
}
return null;
}
/*
* (非 Javadoc)执行相应的DML语句
* @see com.yiduede.wzl.dao.DatabaseDao2_0#executeUpdate(java.lang.String, java.lang.Object[])
*/
public int executeUpdate(String sqlStatement,Object[] param){
PreparedStatement preStatement = null;
Connection connection = null;
try {
int flag = 0;
connection=dataSource.getConnection();
preStatement=connection.prepareStatement(sqlStatement);
for(int n=0;n<param.length;n++){
preStatement.setObject(n+1,param[n]);
}
flag = preStatement.executeUpdate();
return flag;
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}finally{
this.closeNormal(null, preStatement, connection);
}
return 0;
}
/*
* (非 Javadoc)执行相应的DML语句
* @see com.yiduede.wzl.dao.DatabaseDao2_0#executeUpdate(java.lang.String)
*/
public int executeUpdate(String sqlStatement){
try {
int flag=0;
Connection connection=dataSource.getConnection();
Statement statement=connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
flag =
- 1
- 2
- 3
前往页