java数据库开发之JDBC的完整封装兼容多种数据库
目前此代码我只用过mysql和oracle数据库测试过,但相信其它数据库都是可以的,只要导入你需要操作的数据库jar包,驱动等就可,下面上代码:
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.ResultSetMetaData;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
/**
*对jdbc的完整封装
*
*/
publicclassJDBCUtil{
privatestaticStringdriver=null;
privatestaticStringurl=null;
privatestaticStringusername=null;
privatestaticStringpassword=null;
privateCallableStatementcallableStatement=null;//创建CallableStatement对象
privateConnectionconn=null;
privatePreparedStatementpst=null;
privateResultSetrst=null;
/* static{
try{
//加载数据库驱动程序
Class.forName(driver);
}catch(ClassNotFoundExceptione){
System.out.println("加载驱动错误");
System.out.println(e.getMessage());
}
}*/
publicJDBCUtil(Stringdriver,Stringurl,Stringusername,Stringpassword){
this.driver=driver;
this.url=url;
this.username=username;
this.password=password;
}
/**
*建立数据库连接
*@return数据库连接
*/
publicConnectiongetConnection(){
try{
//加载数据库驱动程序
try{
Class.forName(driver);
}catch(ClassNotFoundExceptione){
System.out.println("加载驱动错误");
System.out.println(e.getMessage());
e.printStackTrace();
}
//获取连接
conn=DriverManager.getConnection(url,username,
password);
}catch(SQLExceptione){
System.out.println(e.getMessage());
}
returnconn;
}
/**
*insertupdatedeleteSQL语句的执行的统一方法
*@paramsqlSQL语句
*@paramparams参数数组,若没有参数则为null
*@return受影响的行数
*/
publicintexecuteUpdate(Stringsql,Object[]params){
//受影响的行数
intaffectedLine=0;
try{
//获得连接
conn=this.getConnection();
//调用SQL
pst=conn.prepareStatement(sql);
//参数赋值
if(params!=null){
for(inti=0;iexcuteQuery(Stringsql,Object[]params){
//执行SQL获得结果集
ResultSetrs=executeQueryRS(sql,params);
//创建ResultSetMetaData对象
ResultSetMetaDatarsmd=null;
//结果集列数
intcolumnCount=0;
try{
rsmd=rs.getMetaData();
//获得结果集列数
columnCount=rsmd.getColumnCount();
}catch(SQLExceptione1){
System.out.println(e1.getMessage());
}
//创建List
List