JDBC,全称为Java Database Connectivity,是Java语言中用来规范客户端程序如何访问数据库的一套API(应用程序编程接口),它是用于执行SQL语句的Java API,允许应用程序与各种数据库建立连接并进行操作。
简而言之JDBC就是通过Java语言来操作数据库。
运行环境: IDEA Edition 2022.1.4 JDK17,、 MySQL 8.0.36以及Navicat Premium 16
想要通过JDBC连接并操作Mysql数据库,在操作之前需要下载一个Mysql数据库驱动jar包。导入项目中必须导入哦!!!
在JDBC中,异常处理通常涉及两种机制:throws
声明和try-catch
块。
首先,throws
声明是在方法签名中使用的,它表明该方法可能会抛出指定的异常类型。这样做的目的是通知方法的调用者,他们需要准备好处理这些潜在的异常。例如,在JDBC中,如果一个方法可能会抛出SQLException
,那么这个方法的签名中应该包含throws SQLException
。这样,任何调用这个方法的代码都知道它们需要处理这个异常,或者在自己的方法签名中再次声明throws
。
其次,try-catch
块是用于实际捕获和处理异常的。在try
块中,您放置可能会抛出异常的代码。如果在执行这些代码时发生异常,控制流将转移到相应的catch
块,该块包含了处理特定类型异常的代码。在JDBC操作中,最常见的异常是SQLException
。使用try-catch
块可以让您有机会在异常发生时执行一些清理工作,比如关闭数据库连接,或者记录错误信息等。
此外,在使用JDBC时,通常会结合这两种机制来确保异常被适当地处理。例如,您可以在try
块中执行数据库操作,并在catch
块中捕获SQLException
,然后进行适当的错误处理或资源清理。
- 加载驱动:需要加载数据库的JDBC驱动,这可以通过
Class.forName()
方法实现,例如Class.forName("com.mysql.jdbc.Driver")
。注意:不同版本驱动不一样 5版本:com.mysql.jc.jdbc.java.Driver 8.版本:com.mysql.jc.jdbc.java.Driver
- 建立连接:使用
DriverManager.getConnection()
方法来建立与数据库的连接。需要提供JDBC URL,这个URL包含了数据库的类型、主机名、端口号和数据库名称等信息。获得的链接是一个对象 ("jdbc:mysql://127.0.0.1:3306/data_01", "root","123456789"); jdbc:mysql 协议,类似与http,https;Java与MySQL之间的协议 127.0.0.1 数据库所在服务器地址 3306 数据库占用的端口号 data_01 数据库名
Connection com = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/data_01", "root","123456789");
- 创建Statement:通过
Connection
对象的createStatement()
方法创建一个Statement
对象,用于发送SQL语句到数据库。Statement statement = com.createStatement();
- 执行SQL:使用
Statement
对象的executeQuery()
(用于查询)或executeUpdate()
(用于更新)方法来执行SQL语句。String sql="insert into student values(100,'虾红',30,99)";
- 处理结果:如果是查询操作,需要处理返回的
ResultSet
对象,提取数据。这里是一个增添操作,只需要返回查看操作完成即可;statement.executeUpdate(sql);
- 关闭资源:在操作完成后,需要关闭
ResultSet
、Statement
和Connection
对象,以释放JDBC资源。这一步非常重要,即使在方法执行完毕后,这些资源也不会立即消失,而是需要显式关闭以避免资源泄露。资源指的就是和数据连接的相关对象statement.close(); com.close();
最后看到已经添加成功,JDBC连接数据库连接成功。数据插入成功 (100,'虾红',30,99)
总的来说,以上就是JDBC连接数据库的基本顺序。需要注意的是,在实际应用中,通常会使用try-with-resources语句或者在finally块中确保资源被正确关闭。此外,为了提高性能和安全性,现在更推荐使用PreparedStatement
代替Statement
,因为PreparedStatement
可以预编译SQL语句并提供参数化查询,有助于防止SQL注入攻击。有时间再写使用PreparedStateme对象查询,敬请期待。
package com.shuangti.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class insert {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection com = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/data_01", "root","123456789");
String sql="insert into student values(100,'虾红',30,99)";
String sql1="updata into student values(100,'虾红',30,99)";
//通过此方法返回一个可执行的对象
Statement statement = com.createStatement();
// executeUpdate执行sql增删改语句
statement.executeUpdate(sql);
statement.close();
com.close();
System.out.println("ok");
} catch (ClassNotFoundException | SQLException e) {
throw new RuntimeException(e);
}
}
}