Java的JDBC编程

1. Java的数据库变成编程:JDBC

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

2. JDBC优势

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

3. JDBC使用

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

在项目中创建文件夹 lib(与 src 同级) ,并将依赖包 mysql-connector-java-5.1.47.jar 复制到 lib 中。再配置该 jar 包到本项目的依赖中:右键点击项目Open Module Settings ,在 Modules 中,点击项目,配置 Dependencies,点击 + JARS or Directories ,将该 lib 文件夹配置进依赖中,表示该文件夹下的 jar包都引入作为依赖。
2)创建数据库连接Connection
Connection接口实现类由数据库提供,获取Connection对象通常有两种方式:
  · 一种是通过DriverManager (驱动管理类) 的静态方法获取:
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");

// 创建数据库连接
Connection connection = DriverManager.getConnection(url);

  · 一种是通过DataSource(数据源)对象获取。实际应用中会使用DataSource对象

DataSource ds = new MysqlDataSource();
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
((MysqlDataSource) ds).setUser("root");
((MysqlDataSource) ds).setPassword("密码");
Connection connection = ds.getConnection();
MySQL数据连接的URL参数格式如下:
jdbc:mysql://服务器地址:端口/数据库名?参数名=参数值

· 以上两种方式的区别是:

1. DriverManager 类来获取的 Connection 连接,是无法重复利用的,每次使用完以后释放资源 时,通过connection.close()都是关闭物理连接。
2. DataSource 提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接
是可以复用的,每次使用完数据库连接,释放资源调用 connection.close() 都是将 Conncetion连接对象回收。
3)创建操作命令Statement
Statement statement = connection.createStatement();

4) 使用操作命令来执行SQL

// 构造要执行的 SQL 语句
String sql = "insert into student values(1, '张三')";
PreparedStatement preparedStatement = connection.prepareStatement(sql);

// 查询操作 (返回临时表数据)
preparedStatement.executeQuery();

// 新增, 修改, 删除操作 (返回值表示这次 SQL 操作影响到的行数)
preparedStatement.executeUpdate();

  也可以通过用户输入来进行操作

// 用户输入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要插入的学号:");
int id = scanner.nextInt();
System.out.println("请输入要插入的姓名:");
String name = scanner.next();

// 构造请求
// 使用 ? 作为占位符
String sql = "insert into student values(?,?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
statement.setInt(1, id);
statement.setString(2, name);
System.out.println("statement: " + statement);

 处理查询结果集

// 执行查询 SQL
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();

//遍历结果集合
while (resultSet.next()) {
    int id = resultSet.getInt("id");
    String name = resultSet.getString("name");
    System.out.println("id = " + id + ", name = " + name);
}

5) 释放相关资源

resultSet.close();
statement.close();
connection.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值