java中PreparedStatement接口及ResultSet结果集
来源:互联网 发布:mac 编译android源码 编辑:程序博客网 时间:2024/05/22 14:24
说明:
1.PreparedStatement接口继承Statement,它的实例包含已编译的SQL语句,执行速度要快于Statement。
2.PreparedStatement继承了Statement的所有功能,三种方法executeUpdate、executeQuery、execute不再需要参数。
3.在JDBC应用中,一般都用PreparedStatement,而不是Statement。
便于操作,先做一些封装:
对连接数据库,关闭连接封装,在之前博客中已经提到DbUtil.java;
对数据库表进行封装,这里是对我的数据库中comp表进行操作,因此封装如下:
package com.mysqltest.jdbc.modelComp;public class CompMember {private int id;private String name;private int age;private double salary;/** * 构造函数1 * @param name * @param age * @param salary */public CompMember(String name, int age, double salary) {super();this.name = name;this.age = age;this.salary = salary;}/** * 重载构造函数 * @param id * @param name * @param age * @param salary */public CompMember(int id, String name, int age, double salary) {super();this.id = id;this.name = name;this.age = age;this.salary = salary;}/** * get,set方法 */public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}@Override/** * 改写toString,使得显示更好 */public String toString() {return "["+this.id+"]"+this.name+","+this.age+","+this.salary;}}
package com.mysqltest.jdbc.xiao1;import java.sql.Connection;import java.sql.PreparedStatement;import com.mysqltest.jdbc.modelComp.CompMember;import com.mysqltest.jdbc.util.DbUtil;public class PstatementTest {private static DbUtil dbUtil = new DbUtil();/** * 用PreparedStatement添加成员 * @param mem * @return * @throws Exception */private static int addMember(CompMember mem) throws Exception{Connection con = dbUtil.getCon();String sql = "insert into comp values(null,?,?,?)";PreparedStatement pstmt = con.prepareStatement(sql);pstmt.setString(1, mem.getName());pstmt.setInt(2, mem.getAge());pstmt.setDouble(3, mem.getSalary());int result = pstmt.executeUpdate();//中间不用传入sqldbUtil.close(pstmt, con); //preparedStatement是子类,用父类关闭也行return result;}public static void main(String[] args) throws Exception {CompMember mem = new CompMember("刘翔", 24, 8000.00);int result = addMember(mem);if (result==1) {System.out.println("添加成功");} else {System.out.println("添加失败");}}}
再利用PreparedStatement接口实现查询,并运用ResultSet结果集:
package com.mysqltest.jdbc.xiao2;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import com.mysqltest.jdbc.modelComp.CompMember;import com.mysqltest.jdbc.util.DbUtil;public class ResultsetTest {private static DbUtil dbUtil = new DbUtil();/** * 遍历查询结果 * @throws Exception */@SuppressWarnings("unused")private static void listMem1() throws Exception {Connection con = dbUtil.getCon();// 获取连接String sql = "select * from comp";PreparedStatement pstmt = con.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();// 返回结果集// next()将光标向后一行while (rs.next()) {int id = rs.getInt(1);// 获取第一列的值idString name = rs.getString(2);//int age = rs.getInt(3);double salary = rs.getDouble(4);System.out.println("编号:" + id + "姓名:" + name + "年龄:" + age + "工资:" + salary);System.out.println("+====================================+");}}/** * 遍历查询结果方法2 * @throws Exception */@SuppressWarnings("unused")private static void listMem2() throws Exception {Connection con = dbUtil.getCon();// 获取连接String sql = "select * from comp";PreparedStatement pstmt = con.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();// 返回结果集// next()将光标向后一行while (rs.next()) {int id = rs.getInt("id");// 获取第一列的值idString name = rs.getString("name");//int age = rs.getInt("age");double salary = rs.getDouble("salary");System.out.println("编号:" + id + "姓名:" + name + "年龄:" + age + "工资:" + salary);System.out.println("+====================================+");}}private static List<CompMember> listMem3() throws Exception{List<CompMember> memList = new ArrayList<CompMember>();Connection con = dbUtil.getCon();// 获取连接String sql = "select * from comp";PreparedStatement pstmt = con.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();// 返回结果集// next()将光标向后一行while (rs.next()) {int id = rs.getInt("id");// 获取第一列的值idString name = rs.getString("name");//int age = rs.getInt("age");double salary = rs.getDouble("salary");CompMember mem = new CompMember(id, name, age, salary);memList.add(mem);//添加到List中}return memList;}public static void main(String[] args) throws Exception {//listMem1();//listMem2();List<CompMember> memList = listMem3();for (CompMember mem : memList) { //遍历集合的每个元素System.out.println(mem);}}}
1 0
- java中PreparedStatement接口及ResultSet结果集
- java.sql 接口 PreparedStatement ResultSet DriverManager
- Java jdbc中Statement,ResultSet,PreparedStatement
- 判断java,jdbc中ResultSet结果集是否为空
- 关于java中返回ResultSet结果集行数
- JAVA将ResultSet结果集遍历到List中
- java.sql.ResultSet接口: 结果集(客户端存表数据的对象)
- java.sql.Statement及子接口: PreparedStatement:
- JDBC中ResultSet结果集总结(三)
- java如何封装ResultSet结果集
- java如何封装ResultSet结果集
- java jdbc(二)各接口介绍--Connection,Statement,ResultSet,PreparedStatement,ResultSetMetaData,DatabaseMetaDa
- PreparedStatement ResultSet
- java JDBC(二):Statement、ResultSet、PreparedStatement
- 封装resultset 结果集
- ResultSet 结果集
- 结果集(ResultSet)用法
- ResultSet滚动结果集
- 开启MyBatis(二)创建工程
- PAT乙级练习题B1031. 查验身份证
- rdd的join使用
- 你的android应用其实不需要那么多的权限(I don't need your permission!)
- Linux命令详解:cat、more、less命令 结合grep 基本可以查看所有的文件
- java中PreparedStatement接口及ResultSet结果集
- 第3章 关于 Greenplum 中的并发控制
- windows下安装JDK和Tomcat
- nodejs的module.exports 与 exports
- 剑指offer系列-T11_2数值的整数次方(时间复杂度为o(logn))
- 2、MySQL安装和配置
- oracle安装问题总结
- 专题四 · 1006
- leetcode 91-120记录