目录
JDBC(java DataBase Connectivity,java连接数据库)
✿ 为什么Class.forName(“com.mysql.jdbc.Driver”); 一行代码就可以完成加载、注册驱动操作?
JDBC(java DataBase Connectivity,java连接数据库)
一、概述:
1,持久化(persistence):将数据保存到可掉电式存储设备中以供之后使用。
2,java中,数据库的存取技术,只能通过jdbc访问数据库。
3,JDBC:执行SQL语句的java API,JDBC 本身是java连接数据库的一个标准,是进行数据库连接的抽象层,由java编写的一组类和接口组成,接口的实现由各个数据库厂商来完成。
● 注意:开发中(编写的java代码)使用到的关于JDBC的接口全部引入的是java.sql包中的。
● 千万不要引入com.mysql.Xxx 类。
- 开发常放错误:忘记导入数据库驱动包; 引入的接口不小心引入到com.mysql.Xxx 类;应该是 java.sql.Xxx类
❀ 开发中需要的jar包,到maven仓库中下载:https://mvnrepository.com/
- 下载:mysql-connector的jar包
二、获取数据库连接对象Connection:
✿ 准备工作:
① 拷贝MySQL的驱动包到项目中lib目录下;
② build path:告诉项目去哪里找字节码文件;
1、讲解:操作JDBC 的第一步:获取JDBC的连接对象(Connection) ”贾琏”:
1):加载注册驱动:
Class.forName(“com.mysql.jdbc.Driver”);
✿ 为什么Class.forName(“com.mysql.jdbc.Driver”); 一行代码就可以完成加载、注册驱动操作?
① Class.forName(); 会把com.mysql.jdbc.Driver 这份字节码加载进JVM;
② 当一份字节码别加载进JVM时,就会执行该字节码中的静态代码块,在该静态代码块中有: java.sql.DriverManager.registerDriver(new Driver());
2):获取连接:通过DriverManger类的getConnection方法来获取连接对象。
Connection conn = DriverManger.getConnection(url,username, password);
■ url:连接数据库的URL:
jdbc:mysql://localhost:3306/数据库名称(Mysql8之前的)
□ 若是连接的是本机的MySQL,并且端口是默认的3306,则可以简写:jdbc:mysql:///数据库名
jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
■ username:数据库的用户名:root
■ password:数据库用户的密码:admin
■ 检测我们获取了数据库的连接:使用MySQL命令:show processlist;
- bug: JDBC连接MySQL时发出的警告WARN: Establishing SSL connection without server's identity verification ...
- 解决:给url路径加上参数:useSSL=false
❀2,操作JDBC的步骤:【口诀:贾琏欲执事】
1)贾:加载注册驱动
2)琏:获取连接对象
3)欲:创建语句对象
4)执:执行SQL语句
5)事:释放资源
3、jdbc操作的API: [贾琏欲执事]
✿ java中写查询操作时,要先分析结果集有什么数据类型,才知道怎么获取数据的格式来获取当前行的数据
- mysql与java数据类型的对应:
- varchar-> String
- text ->String
- bigInt -> long
- int -> int
- decimal-> java.math.BigDecimal
- date -> java.sql.Date
- datatime -> java.sql.Date