JDBC-API①(DriverManager、Connection、Statement)

网友投稿 255 2022-09-06

JDBC-API①(DriverManager、Connection、Statement)

文章目录

​​DriverManager​​

​​注册驱动​​​​获取数据库连接​​

​​Connection​​

​​获取执行 SQL 的对象​​​​事务管理​​

​​Statement​​

​​执行SQL语句​​

DriverManager

DriverManager是一个工具类,这个工具类里面有很多静态方法

接下来我们来看看它的作用。

注册驱动获取数据库连接

注册驱动

registerDriver方法是用于注册驱动的,但是我们之前并不是这样写的。而是如下实现

Class.forName("com.mysql.jdbc.Driver");

我们查询MySQL提供的Driver类,看它是如何实现的,源码如下:

在该类中的静态代码块中已经执行了 ​​DriverManager​​​ 对象的 ​​registerDriver()​​​ 方法进行驱动的注册了,那么我们只需要加载 ​​Driver​​​ 类,该静态代码块就会执行。而 ​​Class.forName("com.mysql.jdbc.Driver");​​​ 就可以加载 ​​Driver​​ 类。

提示:MySQL 5之后的驱动包,可以省略注册驱动的步骤自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类

获取数据库连接

注意:

jdbc:mysql://是一种协议,一种固定的写法因为ip地址或者域名都可以,所以实例中的jdbc:mysql://127.0.0.1:3306/db1也可以写为jdbc:mysql://localhost:3306/db1

Connection

Connection(数据库连接对象)作用:

获取执行 SQL 的对象管理事务

获取执行 SQL 的对象

普通执行SQL对象

Statement createStatement()

预编译SQL的执行SQL对象:防止SQL注入

PreparedStatement prepareStatement(sql)

执行存储过程的对象

CallableStatement prepareCall(sql)

通过这种方式获取的 ​​CallableStatement​​ 执行对象是用来执行存储过程的,而存储过程在MySQL中不常用。

事务管理

例如:

/** * JDBC API 详解:Connection */public class JDBCDemo3_Connection { public static void main(String[] args) throws Exception { //1. 注册驱动 //Class.forName("com.mysql.jdbc.Driver"); //2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写 String url = "jdbc:mysql:///db1?useSSL=false"; String username = "root"; String password = "1234"; Connection conn = DriverManager.getConnection(url, username, password); //3. 定义sql String sql1 = "update account set money = 3000 where id = 1"; String sql2 = "update account set money = 3000 where id = 2"; //4. 获取执行sql的对象 Statement Statement stmt = conn.createStatement(); try { // 开启事务 conn.setAutoCommit(false); //5. 执行sql int count1 = stmt.executeUpdate(sql1);//受影响的行数 //6. 处理结果 System.out.println(count1); int i = 3/0; //5. 执行sql int count2 = stmt.executeUpdate(sql2);//受影响的行数 //6. 处理结果 System.out.println(count2); // 提交事务 conn.commit(); } catch (Exception throwables) { // 回滚事务 conn.rollback(); throwables.printStackTrace(); } //7. 释放资源 stmt.close(); conn.close(); }}

Statement

Statement的唯一作用就是执行SQL语句。

执行SQL语句

开发很少使用java代码操作DDL语句

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:原子化社会背景下,智能营销有何利弊?
下一篇:JDBC初识
相关文章

 发表评论

暂时没有评论,来抢沙发吧~