如何用Java代码操作数据库(JDBC编程)

目录

 JDBC编程的由来

JDBC编程的准备工作

 1. 下载数据库驱动包

 2. 将jar包作为标准库​编辑

 3. 编写JDBC代码(需要通过下面几个步骤完成开发)

(1)JDBC编程(在数据库中插入一条记录)

 运行结果:

 JDBC代码(插入记录)需要注意:

(2)JDBC编程(在数据库中查询多条记录)

 执行结果:


前言

 JDBC编程的由来

    如果是在公司操作数据库,大多数情况都是用代码来操作数据库的,可能每个公司用的数据库都是不一样的,各种数据库,如MySQL,Oracle,SQL Server在进行开发的时候,就会提供一组编程接口(API),这些数据库提供的API是不相同的,此时程序猿就需要学习很多份API,后来Java提出,统一API,由数据库厂商提供一个程序来完成API的转换,对各种数据库原装的API进行封装,再提供成JDBC的形状,再进行学习代码操作数据库时,就学习Java的JDBC这一套api即可。

    Java程序猿要想进行数据库的开发,就需要在项目张导入对应的数据库的驱动包才能用Java代码操作数据库。(驱动包是由数据库厂商提供的),可以在maven中央仓库(类似于应用商店)下载。

JDBC编程的准备工作

1. 在maven中央仓库中下载对应版本的数据库驱动包(大版本能匹配即可),maven中央仓库地址:https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/3.1.0
2. 在Java项目中新建包,把对应的驱动包复制到包中。之后右键选择Add as Library(添加为标准库),就是将这个驱动包变成Java标准库提供的,之后就可以直接调用驱动包中的类和方法。
3. 编写JDBC代码。

 1. 下载数据库驱动包

如何用Java代码操作数据库(JDBC编程)_第1张图片

如何用Java代码操作数据库(JDBC编程)_第2张图片

 2. 将jar包作为标准库如何用Java代码操作数据库(JDBC编程)_第3张图片

 如何用Java代码操作数据库(JDBC编程)_第4张图片

 3. 编写JDBC代码(需要通过下面几个步骤完成开发)

1. 创建并初始化一个数据源(描述数据库服务器在哪)
2. 和数据库服务器建立连接(和数据库建立连接后才能对里边的数据)
3. 构造SQL语句(和cmd操作数据库的sql语句一样,只是多了一步预编译sql语句)
4. 执行SQL语句(是否操作成功数据库中的数据,执行完后在控制台会有提示)
5. 释放必要的资源(对服务器而言,同一时刻要处理很多个客户端的请求,就需要消耗一定的资源,所以服务器就需要释放不必要的资源),不用了的资源要赶紧释放

(1)JDBC编程(在数据库中插入一条记录)

package JDBCLearn;/*
java操作数据库先把这个MySQL提供给Java的api导入到项目中(不用解压缩,jvm会帮我们自动识别)
  1.将这个jar压缩包程序导入到jdbc项目,
  2.把这个jar包变成Java库(library),之后Java就能识别jar包中的很多的.class文件了
  3.编写jdbc代码即可了。*/

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class JDBCInsert {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        //JDBC需要通过一下几步来完成开发
        //1.创建并初始化一个数据源  数据源:数据从哪里来(描述数据库服务器在哪里)
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java107_2?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("12345");//这几个东西都设置了,才能连接数据库
        //以上几行代码只是描述数据源,描述数据库在哪  但是还没有和数据库建立连接

        //2.和数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        //3.从控制台录入用户要插入的数据
        System.out.println("请输入学生姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入学生id:");
        int id = scanner.nextInt();
        //4.构造SQL语句
        //这里只是一个字符串语句,就像是一个参数
        //String sql = "insert into student values(" + id + ",'"+ name + "')";//但是这种写法非常丑
        String sql = "insert into student values(?,?)";//问号就是两个占位符
        PreparedStatement statement = connection.prepareStatement(sql);//就是预编译一下给数据库服务器的这个sql指令
        //上一行代码的意思就是做一些准备工作,如果直接把sql语句传给数据库服务器,让它去解析我们的指令,这个时候服务器的压力就会大很多
        statement.setInt(1,id);//这个是把第一个占位符设置成id
        statement.setString(2,name);//这个是把第二个占位符设置成name
        //5.执行SQL语句
        int ret = statement.executeUpdate();//executeUpdate指的是影响的行数(可以在服务器那端敲语句查看一下)
        System.out.println("ret = " + ret);
        //这句代码的意思就是把sql语句(预编译过的)发送给数据库服务器,由数据库服务器做出响应

        //6.释放必要的资源
        statement.close();
        connection.close();
    }
}

 运行结果:

 执行代码之前:

如何用Java代码操作数据库(JDBC编程)_第5张图片

  执行代码之后:

如何用Java代码操作数据库(JDBC编程)_第6张图片

 如何用Java代码操作数据库(JDBC编程)_第7张图片

 JDBC代码(插入记录)需要注意:

1. 写的代码不应该直接插入某一条记录,而是让用户从控制台输入,然后插入到数据库,这种写法是更加灵活的(用户是不会写JDBC的代码的,此时插入某一条固定的记录,如果用户需要插入别的记录,此时就需要改代码,这是不现实的)。
2. SetUrl,SetUser,SetPassword相当于有了数据库的钥匙,光描述数据库在哪里不够,还要有钥匙才能进入到数据库操作里边的数据。
3. 注意释放资源的顺序,如果是先创建的资源(PrepareStatment,Connection,),要最后才能释放;后创建的资源要先释放。(如果先关闭了外面的资源,里面的资源就释放不了了)
4. 在构造sql语句后要对sql语句进行预编译(构造的sql语句只是一个字符串,之后数据库服务器拿到这个字符串之后是要解析成sql的,之后才能执行,但是如果是很多的客户端都发一个字符串,服务器需要解析的压力就很大,所以先对构造的sql语句进行预编译,先解析成一个真正的sql语句,再发送给服务器,这样才能更合理的利用服务器的资源)
5. 在执行JDBC代码的时候,要确保Mysql服务器是开启的  (否则编译报错)

(2)JDBC编程(在数据库中查询多条记录)

package JDBCPractice;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import com.sun.deploy.security.MozillaMyKeyStore;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JDBCSelect {
    public static void main(String[] args) throws SQLException {
        //1.创建并初始化数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java100?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("12345");
        //2.建立连接
        Connection connection = dataSource.getConnection();
        //3.构造SQL
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);
        //4.执行SQL
        //executeUpdate返回的是int类型,RsultSet这个集合就像是表一样的结构
        ResultSet resultSet = statement.executeQuery();
        //5.遍历结果集合
        while (resultSet.next()) {
            //把resultSet想象成一个表格,同时这个表格中有一个光标,默认指向表格最上方
            //每次调用next,此时光标就往下走一行,同时next返回一个true
            //当表格遍历完成后,光标指向表格最后了,此时再调用next,就返回false了
            //当光标指向某一行的时候,就可以通过getxxx方法来获取这一行里的数据
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id = " + id + ", name = " + name);
        }
        //6.释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

 JDBC代码(查询记录)需要注意:

1. 整体上和插入记录的代码步骤是一样的,只是多了一步遍历结果的集合。
2. ResultSet这个类就像是一张表,查询到的一行一行的数据都放在这个表中,要把这个数据显示在控制台中,就需要遍历这张表,之后把每一行每一列的数据打印出来即可。

执行结果:

如何用Java代码操作数据库(JDBC编程)_第8张图片

你可能感兴趣的:(MySQL数据库,java,数据库,开发语言)