【MySQL数据库】JDBC编程

目录

 

1.Java的数据库编程:JDBC

2.JDBC工作原理

3.JDBC使用

3.1 JDBC的使用步骤

3.2 JDBC的具体使用

第一步:加载数据库驱动

第二步:创建数据库连接Connection

第三步:创建操作命令(Statement)

第四步:执行SQL语句

第五步:处理结果集(insert /update/delete无需处理)

第六步:释放资源(关闭结果集、命令、连接)

4.JDBC的常用接口和类

4.1 JDBC API

4.2 数据库连接Connection

4.3 Statement对象


1.Java的数据库编程:JDBC

JDBC:即Java Database Connectivity,Java数据库库连接,Java数据库连接,是一种用于执行SQL语句的Java API。它是Java中的数据库连接规范。它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

2.JDBC工作原理

JDBC为多种关系库提供了统一访问方式,作为特定厂商数据库访问API的一张高级抽象,他主包含一些通用的接口类。Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动。

JDBC访问数据库层次结构:

JDBC是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库。每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。

JDBC优势:

  • Java语言访问数据库操作完全面向抽象接口编程
  • 开发数据库应用不用限定在特定数据库厂商的API
  • 程序的可移植性大大增强

3.JDBC使用

准备数据库驱动包,并添加到项目的依赖中:

用的依赖包为:mysql-connector-java-5.1.47.jar

3.1 JDBC的使用步骤

3.2 JDBC的具体使用

第一步:加载数据库驱动

//语法:DriverName就是数据库驱动类所在对应的字符串
calss.forName("DriverName");
//注册驱动:用来告诉JVM使用的是哪个生产厂商的驱动
//加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,
//即将该类加载到JVM方法,并执行该类的静态方法块,静态属性
//加载到MySQL数据库驱动
class.forName("com.mysql.jdbc.Driver");
//加载Oranle数据库驱动
class.forName("oracle..jdbc.Driver.OracleDriver");

JDBC规范定义驱动接口:java。sql.Driver,MySQL驱动包提供了实现类:com.mysql.jdbc.Driver

第二步:创建数据库连接Connection

//创建数据库
Connection connection=DriverManager.
getConnection("jdbc:mysql://localhost:3306/test,'root','123456'");

说明:

  • JDBC规范定义驱动接口:java。sql.Driver,MySQL驱动包提供了实现类:com.mysql.jdbc.Driver
  • 获取连接需要方法:DriverManager.getConnection(url,userName,password),三个参数的意思:
  • url为连接数据库的位置(网址),userName为用户名,password为密码
  • MySQL数据库连接的URL参数格式为:jdbc:mysql://服务器地址:端口/数据库名?参数名=参数值
  • JDBC规定url的格式由三部分组成,每个部分中间使用冒号分割。
  • 第一部分:jdbc,这是固定的;
  • 第二部分:数据库名称,连接的是MySQL数据库,第二部分就写mysql;
  • 第三部分:它是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,MySQL的第三部分分别由数据库服务的IP地址(localhost)、端口号(3306)、以及DATABASE名称(mydb)组成。

第三步:创建操作命令(Statement)

String sql="某个sql语句";
//获取Statement语句执行平台
Statement statement = connection.createStatement();

第四步:执行SQL语句

ResultSet resultSet=statement.executeQuery(
    "select id,sn,name,qq_main,calsses_id from student");

执行SQL方式:

  1. execute(String sql):用于执行任意的SQL语句。
  2. executeQuery(String sql):用于执行查询语句,返回ResultSet结果集对象。
  3. executeUpdate(String sql):主要用于执行DML(数据操作语言)和DDL(数据定义语言)语句。执行DML语句(INSERT、UPDATE或DELETE)时,会返回受SQL语句影响的行数,执行DDL(CREATE、ALTER)语句返回0。

第五步:处理结果集(insert /update/delete无需处理)

while (resultSet.next()) {
      int id = resultSet.getInt("id");
      String sn = resultSet.getString("sn");
      String name = resultSet.getString("name");
      int classesId = resultSet.getInt("classes_id");
      System.out.println(String.format("Student: id=%d, sn=%s, name=%s,
           classesId=%s", id, sn, name, classesId));
}

第六步:释放资源(关闭结果集、命令、连接)

 try{
        //关闭结果集
        if(resultSet!=null){
            resultSet.close();
        }
        //关闭命令
        if(statement!=null){
            statement.close();
        }
        //关闭连接命令
        if(connection!=null){
            connection.close();
        }
    }catch(SQLException E){
        throw new RuntimeException("释放数据库资源错误");
    }
}

说明:每次操作数据库结束后都要关闭数据库连接,释放资源,以重复利用资源

注意:

通常资源的关闭顺序与打开顺序相反,顺序是ResultSet、Statement(或PreparedStatement)和Connection。

为了保证在异常情况下也能关闭资源,需要在try...catch的finally代码块中统一关闭资源。

4.JDBC的常用接口和类

4.1 JDBC API

在Java JDBC编程中对数据的操作均使用JDK自带的APL统一处理,通常与特定数据库的驱动类是完全解耦的。所以一定要掌握Java JDBC API(位于java.sql包下),即可理解Java数据库编程。

4.2 数据库连接Connection

Connection 接口实现类由数据提供,获取Connection对象通常有两种方式:

第一种:通过DiverMager(驱动管理类)的静态方法获取:

//加载JDBC驱动
class.forName("com.mysql.jdbc.Driver");
//创建数据库
Connection connection=DriverManager.
getConnection("jdbc:mysql://localhost:3306/test,'root','123456'");

第二种:通过DataSource(数据源)对象获取。实际中会使用DataAource对象

DataSource ds = new MysqlDataSource();
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
((MysqlDataSource) ds).setUser("root");
((MysqlDataSource) ds).setPassword("root");
Connection connection = ds.getConnection();

两种方式的区别:

  • DiverMager类获取的Connection连接,是无法重复利用的,每次使用完以后释放资源时,通过connection.close()来关闭物理连接。
  • DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接诶是可以复用的,每次使用万数据库连接,释放资源调用connection.close()将Connection连接对象回收。

它的常用方法:

4.3 Statement对象

Statement对象主要是将SQL语句发送到数据库中,它用于执行静态的SQL语句,并返回一个结果对象。

说明:Statement接口对象可以通过Connection实例的createStatement()方法获得,然后返回数据库的处理结果。

Statement常用方法:

JDBC API中主要提供了三种Statement对象:

第一种:statement

用于执行不带sql语句

第二种:PreparedStatement

用于执行带或者不带参数的sql语句;sql局域会预编译在数据库系统;执行速度快于Statement

第三种:CallableStatement

用于执行数据库存储过程的调用

实际开发中最常用的是PreparedStatement对象,

定义:PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。

说明:PreparedStatement接口扩展了带有参数SQL语句的执行操作,应用接口中的SQL语句可以使用占位符“?”来代替其参数,然后通过setXxx()方法为SQL语句的参数赋值。

PreparedStatement接口的常用方法:

特点:

1.参数化sql查询

2.占位符不能使用多值

3.占位符:?下标从1开始

4.阻止常见SQL注入攻击

5.SQL预编译

6.性能比Statement

主要掌握两种执行SQL的方法:

executeQuery() 方法执行后返回单个结果集的,通常用于select语句

executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete语句

示例:

String sql="insert into student (sn,name,qq_mail,classes_id)" +
        " values(?,?,?,?)";
ps=connection.prepareStatement(sql);
ps.setInt(1,10456);
ps.setString(2,"张三");
ps.setString(3,"[email protected]");
ps.setInt(4,2);
ps.executeUpdate(); 

4.4 ResultSet对象

常用方法:ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且通过一套getXXX方法提供了对这些行中数据的访问。

ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用 ResultSet的next()方法,如果我们想啊哟得到 ResultSet里的所有记录,就应该使用while循环。

发布了62 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43669007/article/details/104378716