JDBC连接数据库

JDBC(Java Database Connectivity)是Java编程语言中的一种用于执行SQL语句的API(应用程序接口)。它使得Java应用程序能够访问和处理各种不同的关系数据库。

使用JDBC可以连接到多种数据库系统,例如MySQL、Oracle、PostgreSQL、SQL Server等,并且可以执行各种不同类型的SQL查询、更新和事务操作。

下面是使用JDBC访问数据库的一些基本步骤:

  • 加载驱动程序。首先需要加载用于特定数据库的JDBC驱动程序。这通常是通过使用Class.forName()方法来实现的。

  • 建立数据库连接。使用DriverManager.getConnection()方法可以建立与特定数据库的连接。

  • 创建Statement对象。创建一个可用于发送SQL语句到数据库的Statement对象。

  • 执行SQL查询。使用Statement对象可以执行各种类型的SQL语句,例如SELECT、INSERT、UPDATE和DELETE等。

  • 处理结果集。使用ResultSet对象来处理SQL查询的结果集,并以适当的方式显示或使用这些结果。

  • 释放资源。在使用完数据库之后,需要释放所有相关资源。这通常包括关闭连接、Statement和ResultSet对象。

在JDBC连接数据库中,执行SQL语句并接收结果集的方法主要有以下几种:

  • execute()方法:可以执行所有类型的SQL语句(SELECT、INSERT、UPDATE、DELETE等),如果SQL语句返回结果集,需要使用getResultSet()方法获取结果集。
  • executeQuery()方法:只能执行SELECT语句,并返回一个ResultSet对象,该对象包含了查询语句的结果集。
  • executeUpdate()方法:用于执行INSERT、UPDATE或DELETE语句,返回值为更新记录数。
  • executeBatch()方法:批量执行一批SQL语句,返回一个int数组,其中每个元素是对应SQL语句影响的行数。
  • execute():执行SQL语句,返回一个boolean类型值,表示执行该语句是否返回了一个结果集。
  • executeQuery():执行查询操作,返回一个ResultSet类型的结果集,其中ResultSet接口用于访问表格型的数据。
  • executeUpdate():执行插入/更新/删除操作,返回一个int类型的值,表示操作影响到的行数。

一、连接常见数据库的JDBC驱动代码:二、建立数据库连接

MySQL

// 1. 加载驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");

// 2. 获取数据库连接对象
String jdbcUrl = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);

Oracle:

// 1. 加载驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");

// 2. 获取数据库连接对象
String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:orcl";
String username = "system";
String password = "123456";
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);

Microsoft SQL Server:

// 1. 加载驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

// 2. 获取数据库连接对象
String jdbcUrl = "jdbc:sqlserver://localhost:1433;databaseName=test";
String username = "sa";
String password = "123456";
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);

三、创建Statement对象

Statement statement=connection.createStatement();

在实际开发中,为避免SQL注入等安全问题,建议使用PreparedStatement对象而非Statement对象来执行SQL语句。PreparedStatement对象使用起来与Statement对象类似,但可通过参数化查询方式对SQL语句进行预编译和防注入处理。

// 创建PreparedStatement对象
String sql = "SELECT * FROM users WHERE name = ?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "张三"); // 设置参数值,并防止SQL注入攻击

// 执行查询
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
    // 处理结果集
}
  • setString() 方法是 PreparedStatement 类的一个成员方法。
  • 该方法用于为 SQL语句中的字符串参数设置字符串值,可以防止 SQL 注入攻击。
  • setString() 方法有两个参数,第一个参数表示 SQL语句中的参数位置,从 1 开始计数;第二个参数表示字符串参数的值。
  • 当 SQL 语句中的某个参数位置与 Java 代码中的参数位置不一致时,就会抛出 SQLException 异常。
  • 另外,如果在使用 setString() 方法时,传入的字符串包含特殊字符,比如单引号、双引号、反斜杠等,需要进行转义处理,否则会导致 SQL 语句语法错误或 SQL 注入攻击。

next()方法

在 while 循环中,每次调用 resultSet.next() 方法会将当前指针向下移动一行,
如果当前行有数据,就返回true,
否则返回 false。因此我们可以在循环体内,通过调用 getInt() 或 getString()等方法,从结果集中读取每行的数据。

需要注意的是,ResultSet 对象是一个指向当前数据行的游标,而非数据本身。在使用 ResultSet
对象之前,必须首先将查询结果集检索到本地,并将游标移动到第一行。同时,如果不再需要ResultSet 对象,应该手动关闭它以释放资源,以避免内存泄漏等问题。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值