JDBC
JDBC概述
JDBC是什么
- JDBC是一套sun公司定义的接口,是一套标准,规定了统一的数据库访问方法
- 各个数据库厂商实现这套标准,让java程序能操作数据库
为什么使用JDBC
jdbc的好处,我们只学习一套接口的使用和操作,就可以访问任何数据库了
怎么使用JDBC
- 下载驱动,mysql驱动
把驱动加载到java环境中,注册
//注册驱动 Class.forName("com.mysql.jdbc.Driver"); - com.mysql.jdbc.Driver.class
获得连接对象 Connection
public static void main(String[] args) throws Exception { //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获得Connection对象 //url jdbc:mysql://数据库IP:端口号/库名 //username 数据库用户名 //password 数据库密码 Connection conn=DriverManager .getConnection( "jdbc:mysql://localhost:3306/demo1", "root", "root"); //验证是否连接成功 System.out.println(conn); //证明接口实现类来自驱动 System.out.println(conn.getClass()); } - ps:如果使用mysql版本为6.0以上的jar包 - url 中要添加时区指定 - "jdbc:mysql://localhost:3306/demo1?serverTimezone=Asia/Shanghai" - "jdbc:mysql://localhost:3306/demo1?serverTimezone=UTC"
连接上数据库后,要执行sql语句
使用Statement对象执行sql语句
执行DDL
String ddl="create table demo_2(" + "id int," + "name varchar(20))"; //boolean flag=sta.execute(ddl); //false代表没有返回结果集 //true代表有返回结果集 //System.out.println(flag);
执行DML
//插入操作 DML //String dml="insert into demo_1 " // + " values(1,'hanmeimei')"; //sta.executeUpdate(dml);
执行DQL,处理结果集
//查询 String dql="select 'hello' as a " + "from dual"; //使用execute(dql)执行查询语句 //boolean flag=sta.execute(dql); //System.out.println(flag); ResultSet rs=sta.executeQuery(dql); while(rs.next()){ String str=rs.getString("a"); System.out.println(str); }
关闭连接对象
conn.close();
关于resultSet游标的讲解
- resultSet对象,使用游标控制数据
- 当执行查询语句的时候,resultSet对象用于封装查询结果
- 方法
- Boolean rs.next(),1.让结果集中的游标往下移动一行,2.判断该行是否有数据!有的话,返回true.没有就返回false
- rs.getXXX()有很多种,分别对应数据库中不同的数据类型
- 数据库类型 get方法
- char/varchar getString
- int getInt
- bigint getLong
- float/double getFloat/getDouble
- datetime/timestamp getDate
初步封装
java面向对象的思想,让我们获得连接对象的代码可以重用
创建一个工具类 DBUtils,封装获取连接对象的静态方法
public class DBUtils { //1.创建静态方法getConnection //返回值为Connection对象 public static Connection getConnection() throws Exception{ //1.1把4个字符串拆分出来 String driver="com.mysql.jdbc.Driver"; String url="jdbc:mysql://localhost:3306/demo1"; String userName="root"; String password="root"; //1.2注册驱动 Class.forName(driver); //1.3获取连接对象 Connection conn=DriverManager .getConnection(url, userName, password); return conn; } }
public static void main(String[] args) throws Exception {
//调用封装的getConnection方法获得连接对象
Connection conn=DBUtils.getConnection();
String sql="select * from demo2";
//获取statement对象
Statement sta=conn.createStatement();
ResultSet rs=sta.executeQuery(sql);
while(rs.next()){
int id=rs.getInt(1);
String str=rs.getString(2);
System.out.println(id);
System.out.println(str);
}
conn.close();
}
课堂练习
- 完成DBUtils的封装,并且测试成功
- 思考尝试一下,封装conn.close()
封装进阶
- JDBC可以操作所有的数据库
- 如果我们现在想要更换数据,或者更换用户/密码/库,需要进入代码去更改
- 把4个字符串driver,url,username,password,放到一个配置文件中,以便后期维护
课堂练习
作业
- 完全熟悉jdbc操作数据的库基本流程 (Connection对象,Statement对象,Properties对象)
- 完成进阶封装的代码操作
- 对emp表,进行3次增删改查操作