赞
踩
学习本文前需要你了解的技术:Java语言、Mysql(可以阅读mysql基础教程)、会使用IDEA;本文中IEDEA经过汉化处理。
本文使用环境:window11、JDK19、mysql-8.0.31、Intellij IDEA2022.2.3
JDBC的全称是Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。详细介绍请自行网络搜索,这里只做简单介绍,话不多说,上代码。
test_user
。CREATE DATABASE test_user;
user
并添加字段id
、name
、password
、phone_num
;CREATE TABLE user(
id INT,
name VARCHAR(12),
password VARCHAR(20),
phone_num INT);
MySQL驱动jar包可以从官方网站下载,也可以从Maven Repository(maven 存储库)下载。
1.1MySQL官网下载地址
1.2、选择tar包或zip包下载并解压缩。
1.3、解压缩获取MySQL驱动jar包。
打开解压后的mysql_connector-j-8.0.31
2.1Maven存储库下载地址
从Maven存储库下载可以直接得到驱动jar包,无需再进行解压。
在IDEA项目中新建libs
目录用于存放mysql-connector-j-8.0.31.jar
包。
1、新建libs目录
2、将mysql-connector-j-8.0.31.jar
包复制粘贴到libs
目录内。
3、将libs
目录添加为项目库。
Java
连接数据库并执行sql
语句1、在项目中新建类JDBC_01
(类名自行命名);
2、JDBC_01
类中代码如下
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; //以上为需要导入的包 public class JDBC_01 { //定义注册驱动常量(8.0版本以上为以下驱动常量),8.0版本以下常量为com.mysql.jdbc.Driver //5.0版本以后可以省略驱动注册 //static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; //定义连接数据库URL常量,其中localhost为IP地址(可以写其它服务器的IP),3306为端口号(对应服务器mysql的端口号),test_user为所连数据库库名。 static final String DB_URL = "jdbc:mysql://localhost:3306/test_user"; //连接本地时可以将本地IP和端口号省略 //static final String DB_URL = "jdbc:mysql:///test_user"; //定义数据库用户名 static String user = "root"; //定义对应的登录密码(此处我的数据库密码为空)。 static String password = ""; public static void main(String[] args) { //创建数据库连接对象并赋予null值 Connection connection = null; //创建执行sql语句的对象并赋予null值 Statement statement = null; //定义一条向数据表user插入数据的sql语句 String sql_insert = "INSERT INTO user VALUES(1,'admin_01','admin',1314)"; try { //注册驱动(5.0以上版本可以省略),注册驱动需要抛出ClassNotFoundException异常。 //Class.forName(DB_DRIVER); //连接数据库,并获取连接对象,需抛出SQLException异常 connection = DriverManager.getConnection(DB_URL,user,password); //获取执行sql语句的对象,需抛出SQLException异常 statement = connection.createStatement(); //执行插入sql语句并获取结果。执行同的sql语句,所使用方法不一样,获取结果的类型也不一样;详细请往下文阅读。 int result = statement.executeUpdate(sql_insert); //控制台输出结果,输出为1,表示连接并执行成功。 System.out.println(result); } catch (SQLException e) { throw new RuntimeException(e); }finally { //释放执行sql语句对象资源,判断是否为null,如果为null,则不需要释放资源。 if (statement != null) { try { statement.close(); } catch (SQLException e) { throw new RuntimeException(e); } } //释放数据库连接对象资源,判断是否为null,如果为null,则不需要释放资源。 if (connection != null) { try { connection.close(); } catch (SQLException e) { throw new RuntimeException(e); } } } } }
编写完并运行,控制台输出结果为1表示连接数据库并执行插入sql语句成功。也可一通过登录mysql查询数据库test_user中数据表user中的数据进行验证(此处省略,可参考mysql基础教程)。
java.sql.SQLSyntaxErrorException
异常:数据库URL常量
是否定义正确,末尾数据库名是否再Mysql数据库中存在。sql语句
是否正确,数据表再数据库中是否存在。CommunicationsException
异常IP
地址和端口号
是否正确。java.lang.ClassNotFoundException
异常JDBC 的 API 提供了以下接口和类:
组件名称 | 简介 | 常用方法 | |||
---|---|---|---|---|---|
名称 | 简介 | 参数 | 返回值类型 | ||
DriverManager | 这个类管理一系列数据库驱动程序。匹配连接使用通信子协议从 JAVA 应用程序中请求合适的数据库驱动程序。识别 JDBC 下某个子协议的第一驱动程序将被用于建立数据库连接。 | getConnection(String url, String user, String password) | 尝试建立与给定数据库URL的连接。 | url- 表单的数据库网址。 user- 代表其建立连接的数据库用户。 password- 用户密码。 | Connection |
Connection | 与特定数据库的连接会话。执行SQL语句,并在连接的上下文中返回结果。 | createStatement() | 创建一个Statement对象,用于将SQL语句发送到数据库。 | —— | Statement |
setAutoCommit(boolean autoCommit) | 将此连接的自动提交模式设置为给定状态。 如果连接处于自动提交模式,则其所有SQL语句将作为单个事务执行并提交。 否则,其SQL语句被分组为通过调用方法commit或方法rollback终止的事务。 默认情况下,新连接处于自动提交模式。 | autoCommit - true启用自动提交模式; false禁用它 | —— | ||
getAutoCommit() | 检索此 Connection对象的当前自动提交模式。 | —— | Boolean | ||
commit() | 使上次提交/回滚之后所做的所有更改都将永久性,并释放此Connection对象当前持有的任何数据库锁。 | —— | —— | ||
rollback() | 撤消在当前事务中所做的所有更改,并释放此 Connection对象当前持有的任何数据库锁。 | —— | —— | ||
rollback(Savepoint savepoint) | 撤消在给定的Savepoint对象设置后进行的所有更改。 | savepoint - Savepoint对象回滚到的标记点 | —— | ||
close() | 立即释放此 Connection对象的数据库和JDBC资源,而不是等待它们自动释放。 | —— | —— | ||
Statement | 用于执行静态SQL语句并返回其生成的结果的对象。 | execute(String sql) | 执行给定的SQL语句,这可能会返回多个结果。 | sql - 任何SQL语句。 | Boolean |
executeUpdate(String sql) | 执行给定的SQL语句,这可能是INSERT,UPDATE,或 DELETE声明,也可以是不返回任何内容的SQL语句,如SQL的DDL语句。 | sql -一个SQL数据操纵语言(DML)语句,比如INSERT,UPDATE或DELETE;或不返回任何内容的SQL语句,例如DDL语句。 | Int | ||
executeQuery(String sql) | 执行给定的SQL语句,该语句返回单个ResultSet对象。 | sql- 要发送到数据库的 SQL 语句,通常是静态SQL的SELECT语句SELECT。 | ResultSet | ||
close() | 立即释放此Statement对象的数据库和 JDBC 资源,而不是等待它自动关闭时发生这种情况。 | —— | —— | ||
PreparedStatement | 表示预编译的SQL语句的对象。SQL语句已预编译并存储在一个PreparedStatement对象中。 然后可以使用该对象多次有效地执行此语句。 | execute(String sql) | 执行给定的SQL语句,这可能会返回多个结果。 | sql - 任何SQL语句。 | Boolean |
executeUpdate() | 执行在该SQL语句PreparedStatement对象,它必须是一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或不返回任何内容的SQL语句,例如DDL语句。 | sql - SQL语句,它必须是一个SQL数据操纵语言(DML)语句,比如INSERT ,UPDATE或DELETE;或不返回任何内容的SQL语句,例如DDL语句。 | Boolean | ||
executeQuery(String sql) | 执行给定的SQL语句,该语句返回单个ResultSet对象。 | sql- 要发送到数据库的 SQL 语句,通常是静态SQL的SELECT语句SELECT。 | ResultSet | ||
close() | 立即释放此Statement对象的数据库和 JDBC 资源,而不是等待它自动关闭时发生这种情况。 | —— | —— | ||
ResultSet | 在你使用语句对象执行 SQL 查询后,这些对象保存从数据获得的数据。它作为一个迭代器,让您可以通过它的数据来移动。 | next() | 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true | —— | Boolean |
get[Type](int columnIndex) | 在 Java 编程语言中检索此[Type]对象的当前行中指定列的值。[Type]可以是int、String、Array等类型。 | columnIndex- 第一列是 1,第二列是 2,... | [Type] | ||
get[Type](String columnLabel) | 在 Java 编程语言中检索此[Type]对象的当前行中指定列的值。[Type]可以是int、String、Array等类型。 | columnLabel- 使用 SQL AS 子句指定的列的标签。如果未指定 SQL AS 子句,则标签是列的名称 | [Type] | ||
Driver | 这个接口处理与数据库服务器的通信。你将很少直接与驱动程序互动。相反,你使用 DriverManager 中的对象,它管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息。使用创建于这个接口的对象将 SQL 语句提交到数据库。除了执行存储过程以外,一些派生的接口也接受参数。 | connect(String url,Properties info) | 尝试与给定 URL 建立数据库连接。 | url- 要连接到的数据库的 URL info- 任意字符串标签/值对的列表 连接参数。通常至少是一个“用户”和 应包含“password”属性。 | Connect |
SQLException | 这个类处理发生在数据库应用程序的任何错误。 | —— | —— | —— | —— |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。