JDBC编程步骤

jar驱动包的导入

  1. 将中央仓库下载的jar驱动包导入到项目中
    • 先创建一个名为lib的包在这里插入图片描述
  2. 将jar驱动包复制粘贴到新创建的lib包里面
    在这里插入图片描述
  3. 右键lib然后点击add as Library,完成导入。
    在这里插入图片描述

JDBC的使用——增删改通用

//1.创建数据源头
	DataSource dataSource = new MysqlDataSource();//选javax.sql的包
	((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");
	((MysqlDataSource)dataSource).setUser("root");//管理员,root是mysql中默认自带的用户
	((MysqlDataSource)dataSource).setPassword("22222");//MySQL服务器的密码

//2.建立和数据库的连接 请求和响应交互
	Connection connection = dataSource.getConnection();//异常抛出,Connection 包选sql的

//3.构造sql
	String sql = "insert into student values(?,?,?)";//使用问号作为占位符
	int id = 0;
	String name = null;
	int classId = 1;
	PreparedStatement statement = connection.prepareStatement(sql);//预处理操作
	statement.setInt(1,id);//这种方式比较安全,注意从 "1" 开始算
	statement.setString(2,name);
	statement.setInt(3,classId);

//4.把sql 发送给服务器
	int ret = statement.executeUpdate();//可以视为一个写操作,修改和删除都可以用
	System.out.println(ret);//返回的就是多少行受到影响

//5.释放资源,关闭连接
	statement.close();
	connection.close();//顺序不要错,先申请的后释放

1. 创建数据源头,从哪里来到哪里去

  • DataSource dataSource = new MysqlDataSource();
    • DataSource 记得选**javax.sql**的包
    • DataSource本身是接口,不能直接实例
    • 如果new MysqlDataSource 出现报错,有可能是导入jar出问题。
  • ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");
    • 设置具体的url 其实就是"网址",以后直接复制粘贴就好了;
    • MysqlDataSource mysqlDataSource = new MysqlDataSource(); 为什么不直接这样写?
      • 其实这样写也是完全正确的
      • 为了降低耦合度才进行向下转型,在需要向下转型的时候进行向下转型,不需要向下转型的时候它就为DataSource类型。
      • 这样在未来如果想要转换数据库,比较方便。
    • jdbc:mysql:操作mysql
    • 127.0.0.1: 3306:本机ip地址和端口号
    • java109是数据库名字,复制的时候记得自己更换数据库名字哦
    • characterEncoding=utf8:字符集设置
    • useSSl=false进行加密,最好选择false
  • 找到了mysql服务器了之后,就可以登录用户名密码
  • ((MysqlDataSource)dataSource).setUser("root");
    • 管理员,root是mysql中默认自带的管理员用户
  • ((MysqlDataSource)dataSource).setPassword("22222");
    • MySQL服务器的密码

2. 建立和数据库的连接 请求和响应交互

使用JDBC编程相当于我们是一个客户端,向服务器发送请求,发送请求前需要与数据库服务器相接通

  • Connection connection = dataSource.getConnection();
    • Connection 包记得要选择**java.sql**的,然后将异常抛出。

3. 构造sql语句

  • String sql = "insert into student values(?,?,?)";

    • 使用问号作为占位符,问号可以由自定义内容输入,只需要满足表的各个类型条件即可。
    • 直接将(?,?,?)写成(1,‘张三’,5)也是没有问题的,占位符?只是为了不写死内容。
    • 不建议使用 字符串+字符串变量+字符串这种方式,一是代码很混乱,二是如果用户恶意使用delete语句可能会造成严重损失,所以建议使用占位符。
      • String sql2 = “insert into student values(”+id+“,”+name+“,”+classId+“)”;
  • PreparedStatement statement = connection.prepareStatement(sql);

    • 准备好的语句/预处理操作,皇上用膳之前会有公公检查食品安全,编译器也会先帮助我们检查语法错误,避免直接发给服务器,减少让服务器报错。
    • 可以认为statement是一个等待发出的承载物(食用盘子,用来装食物)
  • int id = 0;

  • String name = null;

  • int classId = 1;

  • statement.setInt(1,id)

  • statement.setString(2,name);

  • statement.setInt(3,classId);

    • 将占位符?替换成参数变量,(装盘)
    • 注意从 “1” 开始算、可以搭配控制台scanner使用

4. 把sql 发送给服务器

  • int ret = statement.executeUpdate();
  • System.out.println(ret);
    • 可以视为一个写操作,插入、修改和删除都可以用.
    • 返回类型为int,是修改原表的行数(改变了…行)

5.释放资源,关闭连接

连接和预处理都是需要占用系统资源的,使用完后要记得手动释放关闭。

  • statement.close();
  • connection.close();
    • 顺序不要错,先申请的后释放

JDBC的使用——查找

查找操作的1,2,3,5都与上面的操作1,2,3,5相同,(5关闭操作resultset也要释放哦)不同的是发送和接收。

//1.创建数据源头
		DataSource dataSource = new MysqlDataSource();
		((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");
		((MysqlDataSource)dataSource).setUser("root");//管理员,root是mysql中默认自带的用户
		((MysqlDataSource)dataSource).setPassword("22222");//MySQL服务器的密码

//2.建立和数据库的连接 请求和响应交互
        Connection connection = dataSource.getConnection();
        
//3.构造sql
        String sql = "select * from student where id = ?";//占位符
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,1);//第一个问号,值为1
//4.发送给服务器并且接收响应的结果结合
        ResultSet resultSet = statement.executeQuery();//查询的结果集合,它是一个临时表

//5.遍历结果集合,类似迭代器
        while (resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            int classRoom = resultSet.getInt("classId");
            System.out.println("id=" + id+",name="+name);
        }
//6.关闭
        resultSet.close();
        statement.close();
        connection.close();

4.1发送给服务器并且接收

  • ResultSet resultSet = statement.executeQuery();
    • 返回查询的结果集合,它是一个临时表

4.2取出表中元素并打印

while (resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            int classRoom = resultSet.getInt("classId");
            System.out.println("id=" + id+",name="+name);
        }
  • 表的元素是以行为单位存放的

  • 表中存在指针一开始指向第一行参数名
    在这里插入图片描述

  • 通过resultSet.next()语句,移动指针

  • 这个时候就可以取出这一行的元素参数了

  • 指针走完了表最后一行就结束了在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐