linux cpu占用率如何看
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~