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

本文详细介绍了使用Java进行数据库操作的方法,包括预处理对象的使用、SQL语句的执行(如插入、删除、更新和查询记录),以及如何设置参数和处理结果集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、概述

二、预处理对象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"));
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ONESTAR博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值