概念:
JDBC 就是使用Java语言操作关系型数据库的一套API 全称:( Java DataBase Connectivity ) Java 数据库连接。
JDBC的本质:
- 官方(sun公司)定义的一套操作所有关系型数据库的规则,即 接口
- 各个数据库厂商去实现这套接口,提供数据库驱动jar包
- 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar包中的实现类
Java操作数据库的流程:
编写代码的步骤:
//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接String url= "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";String username= "root";String password= "Yuan1001*";Connection conn = DriverManager.getConnection(url, username, password);//3.定义sql语句String sql="update account set money=2000 where id=1";//4.获取执行sql的对象StatementStatement state = conn.createStatement();//5.执行sqlint count = state.executeUpdate(sql);//受影响的行数//6.处理结果System.out.println(count);//7.释放资源state.close();conn.close();
三、JDBC API详解
3.1DriverManager
url 连接路径:
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参 数键值对1&参数键值对2…
示例:jdbc:mysql://127.0.0.1:3306/db1
==细节:== 如果连接的是本机mysql服务器,并且mysql服务默 认端口是3306,则url可以简写为:jdbc:mysql:///数 据库名称?参数键值对
配置 useSSL=false 参数,禁用安全连接方式,解决 警示提示
user:用户名
password:密码
3.2Connection
Connection(数据库连接对象)的作用:
1.获取执行SQL的 对象
2.管理事物
3.2.1获取执行SQL的 对象
普通执行SQL对象:
预编译SQL的执行SQL对象:防止SQL注入
执行存储过程的对象:
3.2.2事务管理
- MySQL事务管理:
- JDBC事物管理:
//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的对象 StatementStatement stmt = conn.createStatement();try {// ============开启事务==========conn.setAutoCommit(false);//5. 执行sqlint count1 = stmt.executeUpdate(sql1);//
受影响的行数//6. 处理结果System.out.println(count1);int i = 3/0;//5. 执行sqlint count2 = stmt.executeUpdate(sql2);//
受影响的行数//6. 处理结果System.out.println(count2);// ============提交事务==========//程序运行到此处,说明没有出现任何问题,则需求提
交事务conn.commit();} catch (Exception e) {// ============回滚事务==========//程序在出现异常时会执行到这个地方,此时就需要回
滚事务conn.rollback();e.printStackTrace();}//7. 释放资源stmt.close();conn.close();
}
}
3.3Statement
Statement对象的作用就是用来执行SQL语句
3.3.1 执行SQL语句
3.3.2代码实现
DML语句
/*** 执行DML语句* @throws Exception*/
@Test
public void testDML() throws Exception {//1. 注册驱动//Class.forName("com.mysql.jdbc.Driver");//2. 获取连接:如果连接的是本机mysql并且端口是默认的
3306 可以简化书写String url = "jdbc:mysql:///db1?
useSSL=false";String username = "root";执行DDL语句String password = "1234";Connection conn =
DriverManager.getConnection(url, username,
password);//3. 定义sqlString sql = "update account set money = 3000
where id = 1";//4. 获取执行sql的对象 StatementStatement stmt = conn.createStatement();//5. 执行sqlint count = stmt.executeUpdate(sql);//执行完
DML语句,受影响的行数//6. 处理结果//System.out.println(count);if(count > 0){System.out.println("修改成功~");}else{System.out.println("修改失败~");}//7. 释放资源stmt.close();conn.close();
}
3.4ResultSet
ResultSet(结果集对象)的作用:
1.封装DQL查询语句的结果
获取查询结果