Java使用PreparedStatement接口及ResultSet结果集的方法示例
本文实例讲述了Java使用PreparedStatement接口及ResultSet结果集的方法。分享给大家供大家参考,具体如下:
说明:
1.PreparedStatement接口继承Statement,它的实例包含已编译的SQL语句,执行速度要快于Statement。
2.PreparedStatement继承了Statement的所有功能,三种方法executeUpdate、executeQuery、execute不再需要参数。
3.在JDBC应用中,一般都用PreparedStatement,而不是Statement。
便于操作,先做一些封装:
对连接数据库,关闭连接封装,在之前博客中已经提到DbUtil.java;
对数据库表进行封装,这里是对我的数据库中comp表进行操作,因此封装如下:
packagecom.mysqltest.jdbc.modelComp; publicclassCompMember{ privateintid; privateStringname; privateintage; privatedoublesalary; /** *构造函数1 *@paramname *@paramage *@paramsalary */ publicCompMember(Stringname,intage,doublesalary){ super(); this.name=name; this.age=age; this.salary=salary; } /** *重载构造函数 *@paramid *@paramname *@paramage *@paramsalary */ publicCompMember(intid,Stringname,intage,doublesalary){ super(); this.id=id; this.name=name; this.age=age; this.salary=salary; } /** *get,set方法 */ publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } publicdoublegetSalary(){ returnsalary; } publicvoidsetSalary(doublesalary){ this.salary=salary; } @Override /** *改写toString,使得显示更好 */ publicStringtoString(){ return"["+this.id+"]"+this.name+","+this.age+","+this.salary; } }
然后利用PreparedStatement接口实现增的操作:
packagecom.mysqltest.jdbc.xiao1; importjava.sql.Connection; importjava.sql.PreparedStatement; importcom.mysqltest.jdbc.modelComp.CompMember; importcom.mysqltest.jdbc.util.DbUtil; publicclassPstatementTest{ privatestaticDbUtildbUtil=newDbUtil(); /** *用PreparedStatement添加成员 *@parammem *@return *@throwsException */ privatestaticintaddMember(CompMembermem)throwsException{ Connectioncon=dbUtil.getCon(); Stringsql="insertintocompvalues(null,?,?,?)"; PreparedStatementpstmt=con.prepareStatement(sql); pstmt.setString(1,mem.getName()); pstmt.setInt(2,mem.getAge()); pstmt.setDouble(3,mem.getSalary()); intresult=pstmt.executeUpdate();//中间不用传入sql dbUtil.close(pstmt,con);//preparedStatement是子类,用父类关闭也行 returnresult; } publicstaticvoidmain(String[]args)throwsException{ CompMembermem=newCompMember("刘翔",24,8000.00); intresult=addMember(mem); if(result==1){ System.out.println("添加成功"); }else{ System.out.println("添加失败"); } } }
再利用PreparedStatement接口实现查询,并运用ResultSet结果集:
packagecom.mysqltest.jdbc.xiao2; importjava.sql.Connection; importjava.sql.PreparedStatement; importjava.sql.ResultSet; importjava.util.ArrayList; importjava.util.List; importcom.mysqltest.jdbc.modelComp.CompMember; importcom.mysqltest.jdbc.util.DbUtil; publicclassResultsetTest{ privatestaticDbUtildbUtil=newDbUtil(); /** *遍历查询结果 *@throwsException */ @SuppressWarnings("unused") privatestaticvoidlistMem1()throwsException{ Connectioncon=dbUtil.getCon();//获取连接 Stringsql="select*fromcomp"; PreparedStatementpstmt=con.prepareStatement(sql); ResultSetrs=pstmt.executeQuery();//返回结果集 //next()将光标向后一行 while(rs.next()){ intid=rs.getInt(1);//获取第一列的值id Stringname=rs.getString(2);// intage=rs.getInt(3); doublesalary=rs.getDouble(4); System.out.println("编号:"+id+"姓名:"+name+"年龄:"+age+"工资:"+salary); System.out.println("+====================================+"); } } /** *遍历查询结果方法2 *@throwsException */ @SuppressWarnings("unused") privatestaticvoidlistMem2()throwsException{ Connectioncon=dbUtil.getCon();//获取连接 Stringsql="select*fromcomp"; PreparedStatementpstmt=con.prepareStatement(sql); ResultSetrs=pstmt.executeQuery();//返回结果集 //next()将光标向后一行 while(rs.next()){ intid=rs.getInt("id");//获取第一列的值id Stringname=rs.getString("name");// intage=rs.getInt("age"); doublesalary=rs.getDouble("salary"); System.out.println("编号:"+id+"姓名:"+name+"年龄:"+age+"工资:"+salary); System.out.println("+====================================+"); } } privatestaticListlistMem3()throwsException{ List memList=newArrayList (); Connectioncon=dbUtil.getCon();//获取连接 Stringsql="select*fromcomp"; PreparedStatementpstmt=con.prepareStatement(sql); ResultSetrs=pstmt.executeQuery();//返回结果集 //next()将光标向后一行 while(rs.next()){ intid=rs.getInt("id");//获取第一列的值id Stringname=rs.getString("name");// intage=rs.getInt("age"); doublesalary=rs.getDouble("salary"); CompMembermem=newCompMember(id,name,age,salary); memList.add(mem);//添加到List中 } returnmemList; } publicstaticvoidmain(String[]args)throwsException{ //listMem1(); //listMem2(); List memList=listMem3(); for(CompMembermem:memList){//遍历集合的每个元素 System.out.println(mem); } } }
更多关于java相关内容感兴趣的读者可查看本站专题:《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。