0.编写JDBC的一般过程
1.导入jdbc连接包
- 下载连接包:mysql-connector-java-8.0.19.jar
- 在javaProject项目中新建文件夹lib,将mysql-connector-java-8.0.19.jar包拷贝到该文件夹
- 对jar包右键,buildpath->add bild path
2.创建数据库
- 创建student数据库
- 创建t_student表,表结构如下
- 表数据如下
3.连接数据库并输出数据表内容
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.cj.jdbc.Driver;//最新引入的包,需提前引包:import com.mysql.cj.jdbc.Driver;这个实现新版的包,老版的引包为:import com.mysql.jdbc.Driver;已经不能使用
public class MainTest {
public static void main(String[] args) {
try {
//注册驱动
DriverManager.registerDriver(new Driver());
//DriverManager.getConnection("jdbc:mysql://localhost/sutent?user=root&password=hujian790402");
//建立连接,需要输入完整的时区
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/student?serverTimezone=Hongkong","root","hujian790402");
//创建statement和数据库打交道,一定要创建这个对象
Statement statement=(Statement) connection.createStatement();
//执行查询语句
String sql="select * from t_student";
ResultSet resultset=statement.executeQuery(sql);
//循环遍历结果集
while (resultset.next()) {
int id=resultset.getInt("id");
String name=resultset.getString("name");
int age=resultset.getInt("age");
System.out.println("id:"+id+" name:"+name+" age:"+age);
}
resultset.close();
statement.close();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果:
4.改良使用工具类连接数据库并输出数据表内容
1、创建工具类JDBCUtil.java
package com.fengray.Util;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtil {
static String driverClass = null;
static String url = null;
static String name = null;
static String password= null;
static{
try {
//1. 创建一个属性配置对象
Properties properties = new Properties();
InputStream is = new FileInputStream("jdbc.properties");
//使用类加载器,去读取src底下的资源文件。 后面在servlet
//InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//导入输入流。
properties.load(is);
//读取属性
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
name = properties.getProperty("name");
password = properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取连接对象
* @return
*/
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driverClass);//改行语句可以事实性删除
//静态代码块 ---> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());
//DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//DriverManager.getConnection("jdbc:mysql://localhost::3306/student?serverTimezone=Hongkong&?user=monty&password=greatsqldb");
//2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。
conn = DriverManager.getConnection(url, name, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 释放资源
* @param conn
* @param st
* @param rs
*/
public static void release(Connection conn , Statement st , ResultSet rs){
closeRs(rs);
closeSt(st);
closeConn(conn);
}
private static void closeRs(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
}
private static void closeSt(Statement st){
try {
if(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null;
}
}
private static void closeConn(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}
}
2、创建jdbc.properties配置文件
文件内容
driverClass=com.mysql.cj.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/student?serverTimezone\=Hongkong
name=root
password=hujian790402
配置文件目录结构
3、主入口文件
package com.fengray;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.fengray.Util.JDBCUtil;
import com.mysql.cj.jdbc.Driver;
public class MainTest {
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1. 注册驱动
conn = JDBCUtil.getConn();
//3. 创建statement , 跟数据库打交道,一定需要这个对象
st = conn.createStatement();
//4. 执行查询 , 得到结果集
String sql = "select * from t_student";
rs = st.executeQuery(sql);
//5. 遍历查询每一条记录
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id:"+id + " name:"+name+" age:"+age);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCUtil.release(conn, st, rs);
}
}
}
结果如图:
5.使用JUnit进行测试
1、项目名称右键—buildpath—addlibraries—JUnit添加JUnit测试。
2、创建测试类TestDemo,在测试类中添加测试方法,并在方法上方写上@Test标记为测试方法
@Test
public void testInsert() {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
*****
}
3、项目名称右键—runas—JUnit对整个类的所有测试方法进行测试。
4、使用OutLet面板对测试类中的各个测试方法单独进行测试,需要对单个测试方法右键----runas—JUnit