Java使用JDBC开发 之 PreparedStatement接口预处理对象

目录

一、概述

二、预处理对象executeUpdate方法

1、插入记录(insert)

2、删除记录(delete)

3、更新记录(update)

三、预处理对象executeQuery方法

1、查询记录


一、概述

使用 PreparedStatement 预处理对象时,建议每条sql语句所有的实际参数,都使用逗号分隔

String sql = "insert into users(username,password) values(?,?)";
PreparedStatement预处理对象代码:
PreparedStatement pre = conn.prepareStatement(sql)

执行SQL语句:

  • int executeUpdate(): --执行insert update delete语句
  • ResultSet executeQuery(): --执行select语句
  • boolean execute(): --执行select返回true 执行其他的语句返回false

设置实际参数

  • void setXxx(int index, Xxx xx) :将指定参数设置为给定Java的xx值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL Xxx类型

二、预处理对象executeUpdate方法

通过预处理对象的executeUpdate方法,完成记录的insert\update\delete语句的执行。操作格式统一如下:

  1. 注册驱动
  2. 获取连接
  3. 获取预处理对象
  4. SQL语句占位符设置实际参数
  5. 执行SQL语句
  6. 释放资源

1、插入记录(insert)

实现向学生表中插入新的记录

public static void main(String[] args) throws SQLException, ClassNotFoundException {
    //1.注册驱动 反射技术,将驱动类加入到内容
    Class.forName("com.mysql.jdbc.Driver");

    //2.获得数据库连接  DriverManager类中静态方法
    //static Connection getConnection(String url, String user, String password)
    //返回值是Connection接口的实现类,在mysql驱动程序
    //url: 数据库地址  jdbc:mysql://连接主机IP:端口号//数据库名字
    String url =  "jdbc:mysql://localhost:3306/mydb";
    String username = "root";
    String password = "123456";
    Connection con = DriverManager.getConnection(url,username,password);

    //执行SQL语句查询数据表
    String sql = "insert into student(sno,sname,ssex,sage) values(?,?,?,?)";

    //3.调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
    //方法中参数,SQL语句中的参数全部采用问号占位符
    PreparedStatement pre = con.prepareStatement(sql);

    //4 SQL语句占位符设置实际参数
    pre.setObject(1,15450111);
    pre.setObject(2,"五颗星");
    pre.setObject(3,"男");
    pre.setObject(4,10);
    System.out.println(sql);

    //5、执行SQL语句
    int Line = pre.executeUpdate();
    System.out.println("更新记录:" + Line);

    //释放资源
    pre.close();
    con.close();
}

2、删除记录(delete)

实现向学生表中删除记录

public static void main(String[] args) throws SQLException, ClassNotFoundException {
    //1.注册驱动 反射技术,将驱动类加入到内容
    Class.forName("com.mysql.jdbc.Driver");

    //2.获得数据库连接  DriverManager类中静态方法
    //static Connection getConnection(String url, String user, String password)
    //返回值是Connection接口的实现类,在mysql驱动程序
    //url: 数据库地址  jdbc:mysql://连接主机IP:端口号//数据库名字
    String url =  "jdbc:mysql://localhost:3306/mydb";
    String username = "root";
    String password = "123456";
    Connection con = DriverManager.getConnection(url,username,password);

    //执行SQL语句查询数据表
    String sql = "delete from student where sname=?";

    //3.调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
    //方法中参数,SQL语句中的参数全部采用问号占位符
    PreparedStatement pre = con.prepareStatement(sql);

    //4 SQL语句占位符设置实际参数
    pre.setObject(1,"两颗星");
    System.out.println(sql);

    //5、执行SQL语句
    int Line = pre.executeUpdate();
    System.out.println("更新记录:" + Line);

    //6.释放资源
    pre.close();
    con.close();
}

3、更新记录(update)

实现更新Student 学生表中的 Sname 中的值

public static void main(String[] args) throws SQLException, ClassNotFoundException {
    //1.注册驱动 反射技术,将驱动类加入到内容
    Class.forName("com.mysql.jdbc.Driver");

    //2.获得数据库连接  DriverManager类中静态方法
    //static Connection getConnection(String url, String user, String password)
    //返回值是Connection接口的实现类,在mysql驱动程序
    //url: 数据库地址  jdbc:mysql://连接主机IP:端口号//数据库名字
    String url =  "jdbc:mysql://localhost:3306/mydb";
    String username = "root";
    String password = "123456";
    Connection con = DriverManager.getConnection(url,username,password);

    //执行SQL语句查询数据表
    String sql = "update Student set Sname=? where Sno=?;";

    //3.调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
    //方法中参数,SQL语句中的参数全部采用问号占位符
    PreparedStatement pre = con.prepareStatement(sql);

    //4 SQL语句占位符设置实际参数
    pre.setObject(1,"星星");
    pre.setObject(2,"15450132");
    System.out.println(sql);
    
    //5、执行SQL语句
    int Line = pre.executeUpdate();
    System.out.println("更新记录:" + Line);

    //6.释放资源
    pre.close();
    con.close();
}

三、预处理对象executeQuery方法

1、查询记录

实现查血学生表中的记录

public static void main(String[] args) throws SQLException, ClassNotFoundException {
    //1.注册驱动 反射技术,将驱动类加入到内容
    Class.forName("com.mysql.jdbc.Driver");

    //2.获得数据库连接  DriverManager类中静态方法
    //static Connection getConnection(String url, String user, String password)
    //返回值是Connection接口的实现类,在mysql驱动程序
    //url: 数据库地址  jdbc:mysql://连接主机IP:端口号//数据库名字
    String url =  "jdbc:mysql://localhost:3306/mydb";
    String username = "root";
    String password = "123456";
    Connection con = DriverManager.getConnection(url,username,password);

    //执行SQL语句查询数据表
    String sql = "select * from student";

    //3.调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
    //方法中参数,SQL语句中的参数全部采用问号占位符
    PreparedStatement pre = con.prepareStatement(sql);
    System.out.println(sql);

    //4、执行SQL语句
    ResultSet re = pre.executeQuery();
    while (re.next()){
        System.out.println(re.getString("sno") + "    " +  re.getString("sname") +  "    " +
                re.getString("ssex") + "    " + re.getString("sage"));
    }
}

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ONESTAR博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值