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