目录
1.创建数据库用来进行与Jdcb的连接
2.Jdbc部分
创建一个
#建库
CREATE DATABASE sys;
#判读若有student的表则删除表
drop table if exists student
#建表
CREATE table student(
stuId int PRIMARY KEY auto_increment,
stuName VARCHAR(20),
stuSex VARCHAR(2),
stuAge int,
stuAddr VARCHAR(50)
);
#插入数据
INSERT INTO student(stuName,stuSex,stuAge,stuAddr) VALUES('张一','男',18,'北京');
INSERT INTO student(stuName,stuSex,stuAge,stuAddr) VALUES('张二','男',21,'四川');
INSERT INTO student(stuName,stuSex,stuAge,stuAddr) VALUES('王仨','男',14,'河南');
检查数据
先创建项目后新建目录加入mysql驱动Jar包
创建实体类
public class Student {
public int stuId;
public String stuName;
public String stuSex;
public int stuAge;
public String stuAddr;
public Student() {
}
public Student(int stuId, String stuName, String stuSex, int stuAge, String stuAddr) {
this.stuId = stuId;
this.stuName = stuName;
this.stuSex = stuSex;
this.stuAge = stuAge;
this.stuAddr = stuAddr;
}
/**
* 获取
* @return stuId
*/
public int getStuId() {
return stuId;
}
/**
* 设置
* @param stuId
*/
public void setStuId(int stuId) {
this.stuId = stuId;
}
/**
* 获取
* @return stuName
*/
public String getStuName() {
return stuName;
}
/**
* 设置
* @param stuName
*/
public void setStuName(String stuName) {
this.stuName = stuName;
}
/**
* 获取
* @return stuSex
*/
public String getStuSex() {
return stuSex;
}
/**
* 设置
* @param stuSex
*/
public void setStuSex(String stuSex) {
this.stuSex = stuSex;
}
/**
* 获取
* @return stuAge
*/
public int getStuAge() {
return stuAge;
}
/**
* 设置
* @param stuAge
*/
public void setStuAge(int stuAge) {
this.stuAge = stuAge;
}
/**
* 获取
* @return stuAddr
*/
public String getStuAddr() {
return stuAddr;
}
/**
* 设置
* @param stuAddr
*/
public void setStuAddr(String stuAddr) {
this.stuAddr = stuAddr;
}
public String toString() {
return "jdbc{stuId = " + stuId + ", stuName = " + stuName + ", stuSex = " + stuSex + ", stuAge = " + stuAge + ", stuAddr = " + stuAddr + "}";
}
}
了解并写入junit
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class Main {
/*
junit用法:1.方法要定义为无参无返回值的。且测试类的名字不能是Test
2.在方法上使用 @Test 这个注解
3.光标放在后面,然后使用 alt + 回车 进行自动导包,选择---Add 'JUnit4' to classpath
4.这个方法就不需要依赖main方法就可以直接执行
*/
/*
JDBC连接数据库,需要配置四大参数,同时需要导入数据库对应的驱动包
*/
private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/sys?useSSL=false&serverTimezone=UTC";
private String user = "root";
private String password = "root";
}
进行增删改查操作
查询操作
// 查询
@Test
public void testSelectAll() throws Exception {
// 加载数据库驱动
Class.forName(driver);
// 使用驱动管理器来获得连接---获得一个数据库连接对象Connection
Connection con = DriverManager.getConnection(url, user, password);
// 使用Connection创建PreparedStatement预处理对象---PreparedStatement对象可以执行带 ? 的sql语句
String sql = "select * from student";
// 使用PreparedStatement对象执行SQL语句,获得ResultSet结果集对象
PreparedStatement pstm = con.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
// 操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值ResultSet)
// 让结果集的游标不断的往下移动,直到没有数据的时候结束循环
List studentList = new ArrayList<>();//定义集合(大的容器),用来装Student对象(小容器)
// 使用while循环进行输出,直到表单数据全部输出
while (rs.next()) {
//根据字段名称获取表中的数据
int stuId = rs.getInt("stuId");
String stuName = rs.getString("stuName");
String stuSex = rs.getString("stuSex");
int stuAge = rs.getInt("stuAge");
String stuAddr = rs.getString("stuAddr");
// 把以上数据封装到Student对象中
Student student = new Student();
student.setStuId(stuId);
student.setStuName(stuName);
student.setStuSex(stuSex);
student.setStuAge(stuAge);
student.setStuAddr(stuAddr);
// 把当前行封装后的Student对象装载到 List集合中
studentList.add(student);
}
System.out.println(studentList);
// 回收资源
// 判断若rs不为空时关闭rs
if (rs != null) {
rs.close();
}
// 判断若pstm不为空时关闭pstm
if (pstm != null) {
pstm.close();
}
// 判断若con不为空时关闭con
if (con != null) {
con.close();
}
}
增加操作
@Test
public void inserTest() throws Exception {
Class.forName(driver);
Connection con = DriverManager.getConnection(url, user, password);
String sql = "INSERT INTO student(stuName,stuSex,stuAge,stuAddr) VALUES(?,?,?,?);";
PreparedStatement pstm = con.prepareStatement(sql);
// 根据上面?的下标进行一一传参
pstm.setString(1, "张三");
pstm.setString(2, "男");
pstm.setInt(3, 19);
pstm.setString(4, "河南");
int i = pstm.executeUpdate();
if (i > 0) {
System.out.println("成功了");
} else {
System.out.println("失败了");
}
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
}
删除操作
// 删除
@Test
public void deleteTest() throws Exception {
Class.forName(driver);
Connection con = DriverManager.getConnection(url, user, password);
String sql = "DELETE FROM student WHERE stuId=?";
PreparedStatement pstm = con.prepareStatement(sql);
// 删除id为4的那一行
pstm.setInt(1, 4);4
int i= pstm.executeUpdate();
if (i > 0) {
System.out.println("成功了");
} else {
System.out.println("失败了");
}
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
}
修改操作
// 修改
@Test
public void updateTest() throws Exception{
Class.forName(driver);
Connection con = DriverManager.getConnection(url, user, password);
String sql ="UPDATE student SET stuName=? WHERE stuName=?";
PreparedStatement pstm=con.prepareStatement(sql);
// 查找名为张三的人改为李四
pstm.setString(1,"李四");
pstm.setString(2,"张三");
int i = pstm.executeUpdate();
if(i>0){
System.out.println("成功了");
}else{
System.out.println("失败了");
}
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
}