### Java SQL 普通用法 #### 知识点概览 本文将详细介绍Java中进行SQL操作的基本步骤,包括数据库连接、执行SQL语句、处理结果集等,并通过一个具体的示例来展示如何在Java程序中实现这些功能。 #### 数据库连接 在Java程序中与数据库交互的第一步是建立数据库连接。这通常涉及到以下步骤: 1. **加载数据库驱动**:不同的数据库(如MySQL、Oracle、SQL Server等)有不同的驱动程序。在Java中,可以通过`Class.forName()`方法加载特定的数据库驱动。 ```java Class.forName("com.mysql.jdbc.Driver"); ``` 2. **创建连接对象**:使用`DriverManager.getConnection()`方法建立与数据库的连接。此方法需要数据库URL、用户名和密码作为参数。 ```java Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); ``` #### 执行SQL语句 在建立了数据库连接后,接下来需要执行SQL语句。Java提供了几种不同的方式来执行SQL语句: 1. **使用Statement对象**:适用于执行简单的SQL语句,如查询或更新。 ```java Statement stmt = con.createStatement(); String sql = "insert into people values(" + id + ",'" + name + "','" + introduction + "')"; stmt.executeUpdate(sql); ``` 2. **使用PreparedStatement对象**:适用于执行带有参数的SQL语句,可以有效防止SQL注入攻击。 ```java PreparedStatement pstmt = con.prepareStatement("insert into people values(?, ?, ?)"); pstmt.setInt(1, id); pstmt.setString(2, name); pstmt.setString(3, introduction); pstmt.executeUpdate(); ``` 3. **使用CallableStatement对象**:用于执行存储过程或函数调用。 #### 处理结果集 当执行查询语句时,通常会返回一个`ResultSet`对象,其中包含了查询结果。可以通过遍历`ResultSet`来获取每一条记录的信息。 1. **遍历结果集**: ```java ResultSet rs = stmt.executeQuery("SELECT * FROM people WHERE id = ?"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("ID: " + id + ", Name: " + name); } ``` #### 异常处理与资源关闭 在进行数据库操作时,必须妥善处理可能出现的各种异常情况,如`SQLException`。此外,在完成所有操作后,还需要确保关闭所有的资源,以避免内存泄漏等问题。 1. **异常处理**: ```java try { // 数据库操作代码 } catch (SQLException e) { e.printStackTrace(); } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (con != null) { con.close(); } } ``` 2. **资源关闭**:通常在`finally`块中进行资源的关闭操作,以确保即使出现异常也能正确释放资源。 #### 示例分析 在提供的代码示例中,我们首先加载了MySQL的JDBC驱动,然后使用`DriverManager.getConnection()`方法建立了与本地MySQL数据库的连接。接下来,创建了一个`Statement`对象并执行了一条插入语句。值得注意的是,代码中使用了硬编码的方式来构建SQL语句,这可能会导致SQL注入的安全问题。建议使用`PreparedStatement`来替代,以提高安全性。 通过以上介绍,我们可以了解到Java中进行SQL操作的基本流程以及需要注意的关键点。这些知识对于任何希望在Java应用程序中集成数据库功能的开发者来说都是必不可少的。
public class TestJDBC {
public static void main(String[] args) {
// 用命令行参数输入三个字符串,把字符串内容插入表的相应字段
// 本程序的要插入表有三个字段,第一个是数字类型,第二和第三个为字符类型
if (args.length != 3) {
System.out.println("参数错误");
System.exit(-1);
}
int id = 0;
try {
//处理第一个字符串不能转换为数字的异常
id = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
e.printStackTrace();
System.exit(-1);
}
String name = args[1];
String introduction = args[2];
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
// con =
// DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?user=root&password=root");
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/mydb", "root", "root");
stmt = con.createStatement();
- 粉丝: 9
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助