当前位置:   article > 正文

JDBC详解

jdbc

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); 

 建好之后就是这样啦

affda5a0f0734e818aad5c31c37fcb7a.png

数据库建好了之后我们就要尝试再java中写sql语句

大体就是这样

a225dc1f85d445a2a121c0c0eddb9cc2.png

1、首先我们得创建工程,导入驱动jar包

 cfd9e57c00024854ae07f9baa9df0bea.png

jar包导入之后,我们右键点击jar包,选择add as library

d866ec2f7b57472a895e203254d4b149.png

然后这个可以看情况而定了

6114fe3eb5364ad985e2b87e4ac7a15a.png

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、释放资源

结果如下

 e4f878daa3144126b6162c20ce7773a8.png

但是会有红字,idea建议我们使用比较安全的链接方式SSL,配置完会是我们的性能降低一点,所以不使用,我们可以在后面加上    ?useSSL=false

c91b4d8cd38b4a2f9d6fff97a448ced5.png

这样就没有红字了 

b5878893649d43eda27892741aedc35c.png 

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);
}

c1cac0a954b44157b3c142ec441226fa.png 

Statement

  • Statement作用:执行sql语句
  • 执行sql语句

int executeUpdate(sql):执行DML、DDL语句

返回值:(1)DML语句影响的行数(2)DDL语句执行后、执行成功也可能返回0 

ResultSet executeQuery(sql):执行DQL语句

返回值:ResultSet结果集对象 

fc4bf584337848d2aea2e06475664555.png 

执行DML语句

2303250b4ffa403692dd63b499863d62.png

 表中有id=1的受影响行数为1

f730be3aee6b4225a23922f61c8027c3.png 

313a387705b340fda16189e9486fe398.png

表中没有id=5的数据,受影响行数为0 

 784ae78077b7432fb9de80f76e2b28d6.png

还可以优化以下,用户想看到的是修改成功了还是失败了

6067a21152874991aef1e83bbceaeeff.png

id=5时是下面的结果

c0758317fe9e4999be21bd697fae093f.png

执行DDL语句

da75194980e14ffa8bb3b35417a8327a.png

 635b0a799e284f319a341734e95810d6.png

db2创建成功了

8c0c33f926794a40ad0ecbca7005687d.png

再看一下删除

0dabb73abe864cfc99bd8cbc6882bf20.png

be9a55cbba9e43ef87fd68d215c46ae4.png

返回的居然是0,但是我们删除成功了,所以这里没有使用if语句去判断成功与否

3f0b759f539c4c91b8d18352beef2271.png

 

 

 

 

未完待续。。。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/512946
推荐阅读
相关标签
  

闽ICP备14008679号