欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-06 20:53:10
...

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

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

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();