_JDBC简介&快速入门
-
JDBC概念:
- JDBC就是使用JAVA语言操作关系型数据库的一套API
- 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口
- 各个数据库厂商去实现这套接口,提供数据库驱动的jar包
- 我们可以使用这套接口(JDBC)编程,真正执行的代码时驱动jar包中的实现类
-
-
创建工程,导入驱动jar包
-
注册驱动
-
Class.forName("com.mysql.jdbc.Driver");
-
-
获取连接
-
Connection conn = DriverManager.getConnection(url,username,password);
-
-
定义SQL语句
-
String sql = "update...";
-
-
获取执行sql对象
-
stmt.executeUpdate(sql);
-
-
处理返回结果
-
释放资源
-
-
package com.jdbcstudy; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; // JDBC快速入门 public class JDBC_Demo { public static void main(String[] args) { // 注册驱动 try { Class.forName("com.mysql.jdbc.Driver"); // 获取连接 String url ="jdbc:mysql://127.0.0.1:3306/atguigudb"; String username = "root"; String password = "abc123"; Connection conn = DriverManager.getConnection(url, username, password); // 定义sql String sql_01 = "update student set age = 123 where name ='小明'"; // 获取执行sql的对象 Statement Statement stmt = conn.createStatement(); // 执行sql int i = stmt.executeUpdate(sql_01); // 在控制台输出被影响的行数 System.out.println(i); // 释放资源 stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } ==================================== Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 1 Process finished with exit code 0
_JDBC详解、API详解-DriverManager
-
注册驱动
-
Class.forName("com.mysql.jdbc.Driver");
-
提示:
- MySQL 5 之后的驱动包可以省略注册驱动的步骤
-
-
获取连接
-
url:连接路径
-
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2... 示例:jdbc:mqsql://127.0.0.1:3306/atguigudb 细节: 配置useSSL=false 参数,禁用安全连接方式,解决警告提示
-
user:用户名
-
password:密码
-
-
_JDBC-API详解-Connection
-
获取执行SQL的对象
- 普通执行SQL对象
- Statement createStatement()
- 预编译SQL的执行SQL对象:防止SQL注入
- PrepareStatement prepareStatement(sql)
- 执行存储过程的对象
- CallableStatement prepareCall(sql)
- 普通执行SQL对象
-
事务管理
-
MySQL事务管理
-
开启事务:BEGIN; / START TRANSACTION;
-
提交事务:COMMIT;
-
回滚事务:ROLLBACK;
-
MySQL自动提交事务
-
-
JDBC 事务管理:Connection 接口中定义了3个对应的方法
- 开启事务:setAutoCommit(boolean autoCommit):true 为自动提交事务;false为手动提交事务
- 提交事务:commit;
- 回滚事务:rollback;
-
-
package com.jdbcstudy; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JDBC_Demo_02 { public static void main(String[] args) { // 获取mysql连接 String url ="jdbc:mysql://127.0.0.1:3306/atguigudb"; String username = "root"; String password = "abc123"; Connection conn = null; try { conn = DriverManager.getConnection(url, username, password); // 定义sql String sql_01 = "update student set age = 43 where id = 1"; // 创建执行sql的对象 Statement stat = conn.createStatement(); // JDBC事务管理try...catch // 开启事务,并设置手动提交事务 conn.setAutoCommit(false); // 执行sql语句 int i = stat.executeUpdate(sql_01); // 控制台数据执行结果 if (i > 0) { System.out.println("修改成功"); } else { System.out.println("修改失败"); } // 提交事务 conn.commit(); // 释放资源 stat.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); // 如果有异常,则回滚事务 try { conn.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } } } } =================================== 修改成功 Process finished with exit code 0
_JDBC-API详解-Satatement
-
Statement作用:执行sql语句
-
执行SQL语句
-
int executeUpdate(sql): 执行DML、DDL语句 返回值:1.DML语句影响的行数;2.DDL语句执行后,执行成功也可能返回0
-
ResultSet executeQuery(sql): 执行DQL语句 返回值:ResultSet结果集对象
-