文章对应视频出处https://developer.aliyun.com/lesson_1694_13596#_13596
jdbc入门
1 什么是jdbc
jdbc(java DataBase connectivity) 就是java数据库连接,即用java语言来操作数据库.
原来我们操作数据库是在控制体使用sql语句来操作数据库,jdbc是用java语言向数据发送sql语句.
2jdbc原理
早期sun公司的天才们想写一可以连接天下所有数据库的API,是当他们刚刚开始时发现这是不可完成的任务,因为个厂商的据库服务差异太大了.后来sun开始与数据库厂商们讨论,是终得出的结论是,由sun提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协标准,然后各个数据库厂商会遵循sun的规供提供一套访问自己公司的数据库服务器的API出来.sun提供的规范命名为jdbc,而各个厂商提供的,遵循了jdbc规范的,可以访问自己据库的API被称之为驱动
package jdbc;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* Created by kevin on 2020/3/22.
*/
public class Demo1 {
@Test
public void fun1() throws Exception{
/**
* 一 jdbc四大参数配置:
* >driverClassName:com.mysql.jdbc.Driver
* >url:jdbc:mysql://localhost:3306/test
* >username:root
* >password:123
*/
Class.forName("com.mysql.cj.jdbc.Driver");//这是新版本的老版本为com.mysql.jdbc.Driver,MySQL5用的驱动url是com.mysql.jdbc.Driver,MySQL6以后用的是com.mysql.cj.jdbc.Driver.版本不匹配便会报驱动类已过时的错误.
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";//JDBC连接MySQL6 (com.mysql.cj.jdbc.Driver), 需要指定时区serverTimezone
String username = "root";
String password = "mysql";
Connection connection = DriverManager.getConnection(url,username,password);
System.out.println(connection);
/**
* 二、怼数据库的增、删、改
* 1通过Connection对象创建Statement
* > Statement语句的发送器,它的功能就是向数据库发送sql语句
* 2调用他的int exexuteUpdate(String sql) 他可以发送DML、DDL
*/
//1.通过Connection 得到Statement对象
Statement statement = connection.createStatement();
String sql = "insert into stu values('0001','张三','100','男')";
// String sql = "update stu set name='李四' where number='0001'";
// String sql = "delete from stu where number='0001'";
int r = statement.executeUpdate(sql);
System.out.println(r);
statement.close();
connection.close();
}
/**
* 执行查询
*/
@Test
public void fun2() throws Exception{
/**
* 一、得到Connection
* 二、得到Statement,发送select语句
* 三、对查询返回的表格进行解析
* 四、关闭资源
*/
/**
* 一、得到连接
* 1准备四大连接参数
*/
String driverClassName = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
String username = "root";
String password = "mysql";
/**
* 2、加载驱动类
*/
Class.forName(driverClassName);
/**
* 3、通过剩下的3个参数调用DrierManger的getConnection得到连接
*/
Connection connection = DriverManager.getConnection(url,username,password);
/**
* 二、获取Statement,执行select语句
* 1.得到Statement对象:Connection的createStatement())方法
*/
Statement statement = connection.createStatement();
/**
* 2.调用Statement的ResultSet rs = executeQuery(String querySql)
*/
ResultSet resultSet = statement.executeQuery("select * from stu");
System.out.println(resultSet);
/**
* 三、解析ResultSet
*/
while(resultSet.next()){
int gender = resultSet.getInt(3);//通过列编号获取值
String name = resultSet.getString("name");//通过列名获取值
System.out.println(name+","+gender);
}
/**
* 四、关闭资源
* 倒关
*/
resultSet.close();
statement.close();
connection.close();//必须关闭(练习时跑完就结束了,但是真实环境一般项目在一直运行会占用资源,可能引起服务器崩溃)
}
}
代码相关数据库
jdbc代码规范化
1、在try外声明引用的定义
2、在try内为对象实例化
3、在finally中进行关闭,
举例:
public void query(){
Connection con = null;//在try外给出引用定义
Statement stmt = null;
ResultSet rs = null;
try{
con = xxx;//在try内对象实例化
while(rs.next()){
//xxxxxx
}
}catch(Exception e){
//xxx
}finally{
try{
if(con != null){
con.close();//在finally中进行关闭
}
}
}
}