今日内容
1. JDBC操作
JDBC操作DDL语句
1)导包/创建驱动
2)准备sql语句
3)获取连接对象
4)获取执行对象
5)执行sql语句
6)释放资源
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/szr",
String sql = "create table student(" +
"id int primary key auto_increment,"+
"address varchar(20)"+") ;";
Statement stat = conn.createStatement();
2.优化JDBC代码
优化代码
每次进行操作时都要连接数据库,重复书写七大步骤
七大步骤中除了准备sql语句之外基本都一样,过于冗余,所以优化代码结构!
-注册驱动的路径固定
-连接数据库的路径,用户,密码在个人使用时不变
所以
将这些都写入配置文件!
直接从配置文件调用,不同的数据库直接更改配置文件即可,不用更改代码结构!--符合开闭原则!
优化
将重复步骤单独写入方法中,需要的时候直接调用,避免重复书写!
将需要的内容写入配置文件,直接读取配置文件,不用破坏代码结构!
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
private static String driverclass = null ;
private static String url = null ;
private static String user = null ;
private static String password = null ;
InputStream input = JdbcUtils.class.getClassLoader()
.getResourceAsStream("jdbc.properties");
Properties prop = new Properties();
} catch (IOException e) {
driverclass = prop.getProperty("driverclass");
url = prop.getProperty("url");
user = prop.getProperty("user");
password = prop.getProperty("password");
Class.forName(driverclass);
} catch (ClassNotFoundException e) {
public static Connection getConnection() throws SQLException {
Connection conn = DriverManager.getConnection(url,user,password);
public static void close(Statement stat , Connection conn){
} catch (SQLException throwables) {
throwables.printStackTrace();
public static void close(ResultSet result , Statement stat, Connection conn){
} catch (SQLException throwables) {
throwables.printStackTrace();
public class JdbcUtilsTest {
public static void main(String[] args) throws SQLException {
Connection conn = JdbcUtils.getConnection();
String sql = "insert into student(name,age,gender,address) values" +
"('钟离','30','男','往生堂') , " +
"('胡桃','18','女','往生堂') , " +
"('申鹤','25','女','璃月') , " +
"('优菈','19','女','蒙德') "+";";
Statement stat = conn.createStatement();
JdbcUtils.close(stat,conn);
Connection conn1 = JdbcUtils.getConnection();
String sql1 = "select * from student ;";
Statement stat1 = conn1.createStatement();
ResultSet result = stat1.executeQuery(sql1);
System.out.println(result);

3. JDBC查询遍历
JDBC查询遍历
当查询返回到结果集之后
ResultSet中有方法
判断
boolean next()
--判断结果集中是否有下一条数据
获取
getInt(int index)
--获取输入角标值列的内容
getString(String str)
--获取输入列名称的内容
import JDBC.JDBCTest_02.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public static void main(String[] args) throws SQLException {
Connection conn = JdbcUtils.getConnection();
String sql = "select * from student ;";
Statement stat = conn.createStatement();
ResultSet result = stat.executeQuery(sql);
int id = result.getInt(1);
String name = result.getString(2);
int age = result.getInt(3);
String gender = result.getString(4);
String address = result.getString("address");
System.out.println(id+" "+name+" "+age+" "+gender+" "+address);
4.单元测试
单元测试
main方法是全局测试,只要有一个地方不对,都运行不了
所以
单元测试,只测试我们想要测试的地方!
1)导包junit的核心包以及依赖包
2)提供单元测试方法
定义一个功能,没有返回值,没有参数,在方法上定义
@Test标记,它是一个单元测试方法
3)@Before
标记的方法是在单元测试方法之前先执行
比如说
初始化的操作
4)@After
标记的方法是在用单元测试执行之后执行
比如说
释放资源