今日内容
1 JDBC概念【+++】
- 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库
- JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包(接口实现类)。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
- jdbc就是一套java语言操作数据库的接口。
2 JDBC快速入门【+++++】
//1. 导入驱动jar包
// 工程可以使用哪些驱动包(导入msyql,Oracle)
//2.注册驱动
// 告诉程序,具体使用哪一个数据库驱动
Class.forName("com.mysql.jdbc.Driver");//加载Driver类
//3.获取数据库连接对象
// Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");
Connection conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "");
//4.定义sql语句
// String sql = "update account set balance = 2000 where id = 1";
String sql = "update account set balance = 2000";
//5.获取执行sql的对象 Statement
Statement stmt = conn.createStatement();
//6.执行sql
int count = stmt.executeUpdate(sql);
//7.处理结果
System.out.println(count);
//8.释放资源
stmt.close();
conn.close();
3 JDBC相关对象详解【++++】
-
DriverManager:驱动管理对象【+++】
-
注册驱动:
- 写代码:Class.forName(“com.mysql.jdbc.Driver”);
-
获取数据库连接
-
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root"); //简写: Connection conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "");
-
-
-
Connection:数据库连接对象【+++】
- 获取执行sql 的对象
- Statement createStatement()
- PreparedStatement prepareStatement(String sql)
- 管理事务:
- 开启事务:setAutoCommit(false) :调用该方法设置参数为false,即开启事务
- 在执行sql之前
- 提交事务:commit()
- 在所有sql执行完成后
- 回滚事务:rollback()
- 在catch去加
- 注意:cath捕获的异常,最好为Exception
- 获取执行sql 的对象
-
Statement:执行sql的对象【++++】
1. boolean execute(String sql) :可以执行任意的sql 了解 [不常用] 实际使用起来,步骤较多,比较麻烦 2. int executeUpdate(String sql) :执行DML(insert、update、delete)语句【常用】、DDL(create,alter、drop)语句【不常用】 * 返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则执行成功,反之,则失败。 3. ResultSet executeQuery(String sql) :执行DQL(select)语句【常用】
-
ResultSet:结果集对象,封装查询结果【+++++】
-
rs = stmt.executeQuery(sql); //6.处理结果 //循环判断游标是否是最后一行末尾(最后一行的下一行)。 while(rs.next()){ //获取数据 //6.2 获取数据 int id = rs.getInt(1); String name = rs.getString("name"); double balance = rs.getDouble(3); System.out.println(id + "---" + name + "---" + balance); }
-
-
PreparedStatement:执行sql的对象【+++++】
-
解决sql注入问题
-
效率更高
-
//2.定义sql String sql = "select * from user where username = ? and password = ?"; //3.获取执行sql的对象 pstmt = conn.prepareStatement(sql); //给?赋值 pstmt.setString(1,username);//ssss pstmt.setString(2,password);// 1' or 1=1 //select * from user where username = 'ssss' and password = " 1' or 1=1" //4.执行查询,不需要传递sql rs = pstmt.executeQuery();
-