🍎道阻且长,行则将至。🍓
目录
一、JDBC入门
1.概述
(1)JDBC本质
(2)JDBC好处
2.快速入门
(1)步骤
(2)实践
(3)两个小问题
一、JDBC入门
1.概述
JDBC就是使用Java语言操作关系型数据库的一套API,全称:( Java DataBase Connectivity ) Java 数据库连接。JDBC中定义了所有操作关系型数据库的规则。
(1)JDBC本质
官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
(2)JDBC好处
各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发。可随时替换底层数据库,访问数据库的Java代码基本不变。
以后编写操作数据库的代码只需要面向JDBC(接口),操作哪个关系型数据库就需要导入该数据库的驱动包,如需要操作MySQL数据库,就需要在项目中导入MySQL数据库的驱动包。
2.快速入门
(1)步骤
- 编写Java代码
- Java代码将SQL发送到MySQL服务端
- MySQL服务端接收到SQL语句并执行该SQL语句
- 将SQL语句执行的结果返回给Java代码
(2)实践
在编写代码之前我们还需要导入MySQL驱动包,在模块下面新建一个lib文件夹,把mysql包发在这里,开始导入:
这时候可以选择有效级别:全局、项目、模块内有效。
开始编写第一个代码:
public static void main(String[] args) throws Exception {//1. 注册驱动Class.forName("com.mysql.jdbc.Driver");//2. 获取连接String url = "jdbc:mysql://127.0.0.1:3306/db1";String username = "root";String passd = "1234";Connection conn = DriverManager.getConnection(url, username, passd);//3. 定义sqlString sql = "update account set money = 2000 where id = 1";//4. 获取执行sql的对象 StatementStatement stmt = conn.createStatement();//5. 执行sqlint count = stmt.executeUpdate(sql);//受影响的行数//6. 处理结果System.out.println(count);//7. 释放资源stmt.close();conn.close();}
(3)两个小问题
问题1:警告
WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
出现上面的警告是因为高版本MySQL的ssl问题,修改如下设置就不会提升红色警告了: String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
问题2:出错Lock wait timeout exceeded,运行连接缓慢
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4
.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
出现这个错误是因为之前在处理数据库事务产生了错误、没有执行提交,在数据库里面操作提交事务或者回滚之后,运行就可以通过了。
☕物有本末,事有终始,知所先后。🍭