本文目录导读:
随着互联网技术的飞速发展,数据库技术在各个行业都得到了广泛应用,Java作为一种主流的开发语言,其与数据库的结合也越来越紧密,本文将详细介绍Java数据库查询技术,包括连接数据库、执行SQL语句、结果集处理等方面,并结合实际应用场景进行实践。
Java数据库连接
1、JDBC简介
图片来源于网络,如有侵权联系删除
JDBC(Java Database Connectivity)是Java提供的一种标准数据库连接接口,通过JDBC,Java程序可以访问各种关系型数据库,JDBC主要包括以下几个组件:
(1)JDBC驱动程序:用于实现数据库连接,不同的数据库需要使用不同的驱动程序。
(2)JDBC API:提供了一系列用于数据库操作的接口,如Connection、Statement、ResultSet等。
(3)JDBC URL:用于指定数据库连接的地址和参数。
2、连接数据库
图片来源于网络,如有侵权联系删除
下面是一个使用JDBC连接MySQL数据库的示例代码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class JDBCConnect { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"; String username = "root"; String password = "root"; Connection conn = null; try { // 加载MySQL驱动程序 Class.forName("com.mysql.cj.jdbc.Driver"); // 创建数据库连接 conn = DriverManager.getConnection(url, username, password); System.out.println("连接成功!"); } catch (ClassNotFoundException e) { System.out.println("未找到MySQL驱动程序!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("数据库连接失败!"); e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
Java数据库查询
1、执行SQL语句
JDBC提供了Statement和PreparedStatement两种执行SQL语句的方式。
(1)Statement:用于执行静态SQL语句,即SQL语句不包含任何参数。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class QueryByStatement { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"; String username = "root"; String password = "root"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 加载MySQL驱动程序 Class.forName("com.mysql.cj.jdbc.Driver"); // 创建数据库连接 conn = DriverManager.getConnection(url, username, password); // 创建Statement对象 stmt = conn.createStatement(); // 执行查询 rs = stmt.executeQuery("SELECT * FROM user"); // 处理结果集 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("ID: " + id + ", Name: " + name); } } catch (ClassNotFoundException e) { System.out.println("未找到MySQL驱动程序!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("数据库连接失败!"); e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
(2)PreparedStatement:用于执行带参数的SQL语句,可以提高SQL语句的执行效率,防止SQL注入。
图片来源于网络,如有侵权联系删除
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class QueryByPreparedStatement { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"; String username = "root"; String password = "root"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { // 加载MySQL驱动程序 Class.forName("com.mysql.cj.jdbc.Driver"); // 创建数据库连接 conn = DriverManager.getConnection(url, username, password); // 创建PreparedStatement对象 String sql = "SELECT * FROM user WHERE id = ?"; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 1); // 执行查询 rs = pstmt.executeQuery(); // 处理结果集 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("ID: " + id + ", Name: " + name); } } catch (ClassNotFoundException e) { System.out.println("未找到MySQL驱动程序!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("数据库连接失败!"); e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
2、结果集处理
(1)ResultSet:用于存储查询结果,可以通过遍历ResultSet对象来获取查询结果。
(2)ResultSetMetaData:用于获取结果集的元数据,如列名、数据类型等。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; public class ResultSetExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"; String username = "root"; String password = "root"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; ResultSetMetaData metaData = null; try { // 加载MySQL驱动程序 Class.forName("com.mysql.cj.jdbc.Driver"); // 创建数据库连接 conn = DriverManager.getConnection(url, username, password); // 创建PreparedStatement对象 String sql = "SELECT * FROM user"; pstmt = conn.prepareStatement(sql); // 执行查询 rs = pstmt.executeQuery(); // 获取结果集元数据 metaData = rs.getMetaData(); // 获取列数 int columnCount = metaData.getColumnCount(); // 遍历结果集 while (rs.next()) { for (int i = 1; i <= columnCount; i++) { System.out.print(metaData.getColumnName(i) + ": " + rs.getObject(i) + " "); } System.out.println(); } } catch (ClassNotFoundException e) { System.out.println("未找到MySQL驱动程序!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("数据库连接失败!"); e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
本文详细介绍了Java数据库查询技术,包括连接数据库、执行SQL语句、结果集处理等方面,通过实际应用场景的实践,使读者能够更好地理解和掌握Java数据库查询技术,在实际开发过程中,我们需要根据具体需求选择合适的数据库连接方式、SQL语句执行方式以及结果集处理方法,以提高代码的效率和安全性。
标签: #JAVA数据库查询代码
评论列表