JDBC学习笔记对数据库中的数据进行增删改查

本文详细介绍了如何使用Java JDBC连接MySQL数据库并执行SQL语句,包括注册驱动、建立连接、定义SQL、预编译SQL、设置参数、执行SQL以及释放资源。示例展示了查询年龄大于20的学生信息并封装到学生对象列表中的过程。
摘要由CSDN通过智能技术生成

1. 导入jdbc.jar包,注册驱动

在这里插入图片描述

Class.forName("com.mysql.jdbc.Driver");

2.建立连接

Connection conn=DriverManager.getConnection(url,uername,password);

url为服务器地址

语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2…

示例:jdbc:mysql://127.0.0.1:3306/db1

  • 如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称?参数键值对
  • 配置 useSSL=false 参数,禁用安全连接方式,解决警告提示

uername 为数据库用户名
password 为数据库连接密码
DriverManager.getConnection()返回一个Connection对象
用来获取SQL的执行对象 和管理事务

Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db3", "root", "1234");

3.定义SQL语句

String sql="INSERT INTO student(id,ename,age,birthday) VALUES (?,?,?,?)";

4.获取执行者对象

预编译SQL的执行SQL对象:防止SQL注入

PreparedStatement pstm=Connection.prepareStatement(sql);

5.为SQL中的?赋值

pstm.setObject(参数1,参数2

参数1为SQL语句中?的位置
参数2为要为SQL赋的值

6.执行SQL

//增删改
pstm1.executeUpdate();
//查询
pstm1.executeQuery();

增删改的SQL执行 executeUpdate(),该方法返回一个int值 表示操作成功的数据条数,如果没有数据被操作则返回0

executeQuery()方法返回ResultSet对象
ResultSet对象保存查询到的数据 使用ResultSet.getXxx(参数) 获取数据

  • Xxx为数据类型 如ResultSet.getInt(参数),ResultSet.getString(参数)
    参数为String类型 是数据库中每列的列名;

默认操作获取到数据的第一行

调用ResultSet.next()方法可以向下前进一行,返回一个boolean 值 如果还有下一行就返回true 没有则返回false

一般和while集合使用
列如:

while (resultSet.next()) {
            Student stu = new Student();
            stu.setId(resultSet.getInt("id"));
            stu.setEname(resultSet.getString("ename"));
            stu.setAge(resultSet.getInt("age"));
            stu.setBirthday(resultSet.getDate("birthday"));
            list.add(stu);
        }

7.释放资源

		//查询数据才需要执行resultSet.close();
		resultSet.close();
		pstm1.close();
        conn.close();
        

示例

遍历获取到的数据封装到学生对象中 添加到集合

案列 查询db3数据库中 Student表中 年龄大于20的学生信息

		//注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		//获取建立连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db3", "root", "1234");
        //获取执行者对象
        String showSql = "SELECT * FROM student where age>?";
        PreparedStatement  pstm1 = conn.prepareStatement(showSql);
        //设置SQL中?的值
        pstm1.setObject(1, 20);
        //查询数据  条用executeQuery方法执行SQL
        ResultSet resultSet = pstm1.executeQuery();
        ArrayList<Student> list = new ArrayList<>();
        //遍历得到的resultSet
        while (resultSet.next()) {
            Student stu = new Student();
            stu.setId(resultSet.getInt("id"));
            stu.setEname(resultSet.getString("ename"));
            stu.setAge(resultSet.getInt("age"));
            stu.setBirthday(resultSet.getDate("birthday"));
            list.add(stu);
        }
        for (Student student : list) {
            System.out.println(student);
        }
        //释放资源
        resultSet.close();
        pstm1.close();
        conn.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值