✅JDBC是什么?

  • 全称:(JavaDataBaseConnectivity)Java数据库连接
  • 概念:使用Java语言操作关系型数据库的一套API


✅JDBC本质

  • 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类


✅JDBC好处

  • 各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
  • 可随时替换底层数据库,访问数据库的Java代码基本不变


✅JDBC流程

创建工程

注册驱动

获取连接

定义SQL语句

获取执行SQL对象

执行SQL

处理返回结果

释放资源

//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");

//2.获取连接
String url = "jdbc:mysql://127.0.0.1:3306/db1";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);

//3.定义sql
String sql = "update account set money = 2000 where id = 1";

//4.获取执行sqL的对象Statement
Statement stmt = conn.createStatement();

//5.执行sql
int count = stmt.executeUpdate(sqL);//受影响的行数

//6.处理结果
System.out.println(count);

//7.释放资源
stmt.close();
conn.close();


✅JDBC API 详解

DriverManager
  • 注册驱动(可以省略)

        Driver 类中存在静态代码块使用DriverManager.rigisterDriver()方法

  • 获取数据库连接

        getConnection(String url, String username, String password)

        url:jdbc:mysql:///数据库名?参数键值对


Connection
  • 获取执行SQL对象 
//普通执行SQL对象
Statement  createStatement()
//预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement  prepareStatement(sql)
//执行存储过程的对象
CallableStatement  prepareCall(sql)
  • 管理事务

开启事务:setAutoCommit(booleanautoCommit):true为自动提交事务;false为手动提交事务,即为开启事务

提交事务:commit()

回滚事务:rollback()


Statement
  • 执行SQL语言

int executeUpdate(sql): 执行DML、DDL语句

返回值:1.DML语句影响的行数   2.DDL语句执行后,执行成功也可能返回0

ResultSet executeQuery(sql): 执行DQL语句

返回值:ResultSet 结果集对象


ResultSet
  • 封装了DQL查询语句的结果

ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet对象 

booleannext():(1) 将光标从当前位置向前移动一行(2) 判断当前行是否为有效行

返回值:true:有效行,当前行有数据        false:无效行,当前行没有数据

xxx getXxx(参数):获取数据
        xxx:数据类型;如:int getlnt(参数);String getString(参数)
        参数:
                int:列的编号,从1开始
                String:列的名称


PreparedSteatement
  • 预编译SQL并执行SQL语句

①获取PreparedStatement对象

//SQL语句中的参数值,使用?占位符替代
String sql ="select * from user where username = ? and password = ?";

//通过Connection对象获取,并传入对应的sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);

②设置参数值

PreparedStatement对象:setXxx(参数1,参数2):给?赋值
        Xxx:数据类型;如setlnt(参数1,参数2)
        参数:
                参数1:?的位置编号,从1开始
                参数2:?的值

③执行SQL

executeUpdate();/executeQuery();:不需要再传递sql
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐