【MySQL】JDBC编程

摄影分享

目录

数据库编程的必备条件

Java的数据库编程:JDBC

JDBC的使用步骤

1. 创建数据源DataSourece

2.连接数据库

 3.构造并执行sql语句

4.遍历结果集合

5.释放资源


数据库编程的必备条件

  • 编程语言,如Java,C、C++、Python等
  • 数据库,如Oracle,MySQL,SQL Server等
  • 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的,要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。

在实际开发中,SQL很少是手动输入的,绝大多数SQL都是通过代码,自动执行的。就需要让其他编程语言来操作数据库服务器。

MySQL中提供了很多API(Application Programming Interface)(提供的功能/服务)。

Java的标准库,就会给我们提供一些API。这个API中有一些随机数,scanner,集合类。数据库(MySQL)也会提供一组API,通过这组API就可以操作数据库,完成各种增删改查的操作。

Java的数据库编程:JDBC

JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

JDBC的使用步骤

1. 创建数据源DataSourece

第一步,创建DataSource对象,用来描述数据库位置。

 DataSource dataSource = new MysqlDataSource();

其中DataSource为标准库中java.sql里面的一个jdbc接口,MysqlDataSource是来源于我们所下载驱动包中的一个实现DataSource接口的类。

第二步设置数据库的位置“URL”,登录数据库的用户名和密码

//设置数据库所在地址
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false");
//设置登录数据库的用户名
((MysqlDataSource)dataSource).setUser("root");
//设置登录数据库的密码
((MysqlDataSource)dataSource).setPassword("0828");
jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false 是一个URL,也叫唯一资源地址符

具体含义为:URL类型声明://数据库的地址/数据库名?字符集编码&是否加密

【MySQL】JDBC编程_第1张图片

上面的向上/向下转型是jdbc中比较常用的写法, 让后续的代码继续使用DataSoure类型的实例, 避免MysqlDataSource扩散到代码中的各个地方, 以此方便未来更换数据库, 更换时只需要修改一处代码即可.

User是用户名, root为数据库的默认用户名.

Password是登录数据库的密码, 即安装数据时, 我们自己所设的密码.

此时我们数据源创建的操作, 只是去描述了下服务器在那里, 访问哪个数据库, 编码方式是什么, 登陆账号密码是什么等等, 但还没有真正进行连接访问, 下面进行的连接操作, 是真正开始通过网络进行通信.

2.连接数据库

第三步,与数据库服务器建立连接,创建好数据源DataSource对象后,调用该对象的getConnection()方法,获取java.sql.Connection对象,此时就可以与数据库建立连接了。

Connection connection = dataSource.getConnection();

 3.构造并执行sql语句

String sql = "select * from student2";
//将sql字符串包装成一个语句对象,表示待执行的sql的对象
PreparedStatement statement = connection.prepareStatement(sql);
//执行sql
int ret = statement.executeQuery();//返回值为受影响行数

要注意如果待执行的sql语句操作是insert, update, delete, 使用executeUpdate方法执行即可,返回值为影响数据的行数;

而如果待执行的sql语句操作是select, 则使用executeQuery方法执行,返回值是一个ResultSet结果表对象, 其中储存了查询到的的结果, 我们可以通过遍历该结果表来获取查询到的数据.

4.遍历结果集合

把resultSet想象成一个表格,同时表格这里有个光标。初始情况下光标指向表最上面。每次调用next,光标往下一行走,当光标指向某一行的时候,就可以通过getXXX来获取到当前这行里的数据。

while(resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id = "+ id +",name = "+ name);
        }

5.释放资源

第五步, 释放资源, 我们执行完毕sql语句后需要及时地将资源释放, 在JDBC编程中, 最常见需要释放的类或接口有三个, 分别是Connection, PreparedStatement, ResultSet, 要注意的是释放资源的顺序和开启资源的的顺序是相反的, 也就是先开启的要后释放。

//.释放资源
        resultSet.close();
        statement.close();
        connection.close();

下面是完整的jdbc查找代码:

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

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

public class JDBCInsertDemo {
    public static void main(String[] args) throws SQLException {
        //1.创建并初始化数据源
        DataSource dataSource = new MysqlDataSource();
        //设置数据库所在地址
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false");
       //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("0828");
        //2.建立连接
        Connection connection = dataSource.getConnection();
        //3.构造SQL
        String sql = "select * from student2";
        PreparedStatement statement = connection.prepareStatement(sql);
        //4.执行SQL
        ResultSet resultSet = statement.executeQuery();
        //5.遍历结果集合
        while(resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id = "+ id +",name = "+ name);
        }
        //6.释放资源
        resultSet.close();
        statement.close();
        connection.close();

    }
}

你可能感兴趣的:(MySQL,mysql,数据库,java)