java数据库开发之JDBC基础使用方法及实例详解

2020-02-19 12:01:55王冬梅

1.什么是JDBC

JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

JDBC 数据库访问规范

应用程序 <-> JDBC <-> MySQL驱动 <-> MySQL

                 <-> Oracle驱动 <-> Oracle

导入jar包

加载驱动 Class.forName(‘类名')

给出url、username、password

使用DriverManager类得到Connection类

maven导入依赖

<dependencies>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version>
  </dependency>
</dependencies>

连接示例

import java.sql.Connection;
import java.sql.DriverManager;

class Demo {

  // MySQL >= 8.0 配置参数
  private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
  private static final String DB_URL = "jdbc:mysql://localhost:3306/data";
  private static final String USER = "root";
  private static final String PASSWORD = "123456";


  public static void main(String[] args) throws Exception {
    // 注册 JDBC 驱动
    Class.forName(JDBC_DRIVER);

    // 等效于
    // com.mysql.cj.jdbc.Driver driver = new com.mysql.cj.jdbc.Driver();
    // DriverManager.registerDriver(driver);

    // 打开链接
    Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
    
    // 关闭链接
    conn.close();

  }

}

所有的java.sql.Driver实现类,都提供了static代码块,

块内代码把自己注册到DriverManager中

jdbc4.0之后 每个驱动jar包中,在META-INF/services目录下提供了一个java.sql.Driver文件

内容就是该接口的实现类名称

2.JDBC完成增、删、改、查

1、增、删、改

// 发送DML, DDL
int Statement.executeUpdate(String sql);

代码示例

// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);

// 打开链接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
Statement statement = conn.createStatement();

// 增删改
// String sql = "insert into student(sname) values('陆小凤')";
// String sql = "update student set sname='花无缺' where sid=4";
String sql = "delete from student where sid=4";

int ret = statement.executeUpdate(sql);
System.out.println(ret);

// 关闭链接
conn.close();

2、查询

ResultSet executeQuery(String querySql);
boolean ResultSet.next();

// 获取列数据
ResultSet.getString()
ResultSet.getObject()
ResultSet.getInt()
ResultSet.getDouble()

行光标

beforeFirst <- 默认光标位置