jDBC:一套Java提供的接口,共各大数据库厂商实现
JDBC步骤:
0。准备,导包
1.加载驱动,获取连接对象
2. 执行sql语句
3. 操作执行结果/解析结果集
4.关闭资源,先开后关的原则
package com.hadwinling.day01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 演示jDBC的基本操作
*/
public class JDBCDemo01 {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//1.加载驱动,这个驱动在com.mysql.jdbc下Driver
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接对象
//getConnection(url, user, password):url是数据库的地址,数据库的账户,数据库的密码
//UTC:世界标准时间,0时区
// **java.sql.SQLException: The server time zone value这个报错是要我们指定一个时区
// 解决办法:
// serverTimezone:在设定时区的时候,如果设定 serverTimezone=UTC,
// 会比中国时间早 8 个小时,如果在中国,可以选择 Asia/Shanghai
// 或 者 Asia/Hongkong,例如: serverTimezone=Shanghai
//如果出现中文乱码,可以url在后面添加?characterEncoding=utf8
//如果出现useSSL的错误,也是在url后面添加?useSSL = false;**
//在url后面多个参数之间用&连接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/homeworkonline?serverTimezone = UTC ", "root", "root");
//3. 执行sql语句
String sql = "select empno ,ename ,sal,deptno from emp";
//获取Statement对象,
statement = connection.createStatement();
//statement去执行sql语句
//查询executeQuery();返回的是结果集对象(ResultSet),
//execute();返回结果是boolean 即true/false
resultSet = statement.executeQuery(sql);
//4.解析查询结果集,
//使用resultset的方法:next():是用来判断是否有结果集,如果查询到数据,返回true
while(resultSet.next()) {
//获取当前行记录的列
// resultSet.getInt(columnIndex);//通过列索引来获取列值,从1开始,在结果集中的索引
// resultSet.getInt(columnLabel);//通过列名称获取对应的列值
/**
* 这里是通过列索引
*/
// int empno = resultSet.getInt(1);
// String ename = resultSet.getString(2);
// Double sal = resultSet.getDouble(3);
// int deptno = resultSet.getInt(4);
// System.out.println(empno+"\t"+ename +"\t"+sal+"\t"+deptno);
/*
* 这里是通过对应的列名称
*/
int empno = resultSet.getInt("empno");
String ename = resultSet.getString("ename");
Double sal = resultSet.getDouble("sal");
int deptno = resultSet.getInt("deptno");
System.out.println(empno+"\t"+ename +"\t"+sal+"\t"+deptno);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//5.关闭资源 先开后关
if(resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(statement!=null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection!=null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
- java.sql.SQLException: The server time zone value这个报错是要我们指定一个时区
解决办法:
serverTimezone:在设定时区的时候,如果设定 serverTimezone=UTC,
比中国时间早 8 个小时,如果在中国,可以选择Asia/Shanghai 或 者 Asia/Hongkong,例如: serverTimezone=Shanghai - 如果出现中文乱码,可以url在后面添加?characterEncoding=utf8
- 如果出现useSSL的错误,也是在url后面添加?useSSL = false;