JDBC就是使用java语言操作关系型数据库的一套API。
JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的一种标准接口。它提供了一组方法和类,使Java程序能够与各种不同类型的关系型数据库进行交互。
JDBC的主要功能包括建立数据库连接、执行SQL语句、处理查询结果、事务处理等。通过JDBC,开发人员可以使用Java程序来访问和操作数据库,而不需要直接编写特定数据库的特定代码。
JDBC的设计目标是提供一种独立于数据库的数据库访问接口,使得开发人员可以在不同的数据库系统之间切换而不需要改变程序代码。JDBC通过使用驱动程序来实现这一目标,每个数据库都需要提供一个对应的JDBC驱动程序。
使用JDBC可以实现各种数据库操作,如创建数据库、创建表、插入数据、更新数据、删除数据等。同时,JDBC还支持事务处理和批量更新等高级操作。
JDBC是Java平台的一部分,可以在Java开发环境中直接使用。目前,大多数数据库都提供了对应的JDBC驱动程序,可以很方便地与Java程序进行集成。
下面我们来一起学习以下吧!
---------------------------------------------------------------------------------------------------------------------------
为了方便大家一起动手,我把建表的代码给放进来了
CREATE table account(
id int,
name varchar(20),
money INT
);
还有表中的数据
insert into account(id,name,money) VALUES(1,'张三',1000);
insert into account(id,name,money) VALUES(2,'李四',1000);
建好之后就是这样啦
数据库建好了之后我们就要尝试再java中写sql语句
大体就是这样
1、首先我们得创建工程,导入驱动jar包
jar包导入之后,我们右键点击jar包,选择add as library
然后这个可以看情况而定了
2、注册驱动
Class.forName("com.mysql.jdbc.Driver");
3、获取链接
Connection conn = DriverManager.getConnection(url, username, password);
4、定义sql语句
String sql="updata...";
5、获取执行sql对象
Statement stmt=conn.createStatement();
6、执行sql
stmt.executeUpdate(sql);
7、处理返回结果
8、释放资源
结果如下
但是会有红字,idea建议我们使用比较安全的链接方式SSL,配置完会是我们的性能降低一点,所以不使用,我们可以在后面加上 ?useSSL=false
这样就没有红字了
JDBC API 详解
DriverManager
DriverManager(驱动管理类)作用
1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
Mysql 5之后的驱动包,可以省略注册驱动的步骤
自动加载jar包中的META-INF/services/java.sql.Driver文件中的驱动类
2、获取数据库连接
Connection conn = DriverManager.getConnection(url, username, password);
conn我们可以自己随便取
url:连接路径
语句 jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2..
示例 jdbc:mysql://127.0.0.1:3307/db3
- 如果连接的是本机mysql服务器的话,并且mysql服务器默认端口为3306,则url可以简写为
jdbc:mysql:///数据库名?参数键值对
- 配置useSSL=false参数,禁用安全连接方式,解决警告提示
username:用户名
password:密码
Connection
1、获取执行sql的对象
- 普通执行sql对象
Statement createStatement()
- 预编译sql的执行sql对象:防止sql注入
PreparedStatement prepareStatement(sql)
- 执行存储过程中的对象
CallableStatement prepareCall(sql)
2、事务管理
- mydql事务管理
开启事务:BEGIN;/START TRANSACTION
提交事务:COMMIT;
回滚事务:ROLLBACK;
Mysql默认自动提交事务
- JDBC事务管理:Connection接口中定义了三个对应的方法
开启事务:setAutoCommit(Boolean autoCommit):true为自动提交事务;false为手动提交事务,即为开启事务
提交事务:commit()
回滚事务:rollback()
try { //开启事务 conn.setAutoCommit(false); //执行sql int count1 = stmt.executeUpdate(sql1); //处理结果 System.out.println(count1); //执行sql int count2 = stmt.executeUpdate(sql2); //处理结果 System.out.println(count2); //提交事务 conn.commit(); } catch (Exception e) { //回滚事务 conn.rollback(); throw new RuntimeException(e); }
Statement
- Statement作用:执行sql语句
- 执行sql语句
int executeUpdate(sql):执行DML、DDL语句
返回值:(1)DML语句影响的行数(2)DDL语句执行后、执行成功也可能返回0
ResultSet executeQuery(sql):执行DQL语句
返回值:ResultSet结果集对象
执行DML语句
表中有id=1的受影响行数为1
表中没有id=5的数据,受影响行数为0
还可以优化以下,用户想看到的是修改成功了还是失败了
id=5时是下面的结果
执行DDL语句
db2创建成功了
再看一下删除
返回的居然是0,但是我们删除成功了,所以这里没有使用if语句去判断成功与否
未完待续。。。