一,数据库方面。
一,建库
#创建数据库数据库
CREATE DATABASE student;
二,建表
#创建表格
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR (36),sex VARCHAR(16),
age INT,
addr VARCHAR(32)
);
三,插入数据
#插入数据
INSERT INTO student(name,age,sex,addr) VALUES('张三','男',20,'河南');
INSERT INTO student(name,age,sex,addr) VALUES('李四','女',21,'河北');
INSERT INTO student(name,age,sex,addr) VALUES('王五','女',22,'河东');
INSERT INTO student(name,age,sex,addr) VALUES('赵六','男',23,'河西');
二,Java方面代码 (使用IDEA编写)
一,首先创建一个类
要求:类的名字对应数据库表的名字、类的属 性对应表的字段
public class Student {
//属性
private int stuId;
private String stuName;
private String stuSex;
private int stuAge;
private String stuAddr;
/* *//IDEA自动构造代码快捷键: alt + insert(使用这三个Constructor ,Getter and *Setter,toString()完成下面代码) */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; } public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public String getStuSex() { return stuSex; } public void setStuSex(String stuSex) { this.stuSex = stuSex; } public int getStuAge() { return stuAge; } public void setStuAge(int stuAge) { this.stuAge = stuAge; } public String getStuAddr() { return stuAddr; } public void setStuAddr(String stuAddr) { this.stuAddr = stuAddr; } @Override public String toString() { return "Student{" + "stuId=" + stuId + ", stuName='" + stuName + '\'' + ", stuSex='" + stuSex + '\'' + ", stuAge=" + stuAge + ", stuAddr='" + stuAddr + '\'' + '}'; }}
二, 再创建一个类
1)导入驱动包
2)连接数据库配置四大参数
private String driver="com.mysql.cj.jdbc.Driver"; private String url="jdbc:mysql://127.0.0.1:3306/1028"; private String user="***";//***是你设置的数据库用户名 private String password="***";//***是你设置的数据库密码
3)全查操作
@Test
public void testSelectAll() throws ClassNotFoundException, SQLException {
//JDBC操作数据库的步骤
//1.首先在项目根目录创建lib文件夹,放入jdbc驱动程序,然后Add As Library
//2.加载数据库驱动
Class.forName(driver);
//3.使用驱动管理器来获得连接---获得一个数据库连接对象Connection
Connection con=DriverManager.getConnection(url, username, password);
//生成方法调用返回值的快捷键:ctrl + alt + v
//4.使用Connection创建PreparedStatement预处理对象---PreparedStatement对象可以
//执行带 ? 的sql语句
String sql="select * from student";
PreparedStatement pstm = con.prepareStatement(sql);
//5.使用PreparedStatement对象执行SQL语句,获得ResultSet结果集对象
ResultSet rs = pstm.executeQuery();
//6.操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值
//ResultSet)
//让结果集的游标不断的往下移动,直到没有数据的时候结束循环
List<Student> studentList=new ArrayList<>(); //定义集合(大的容器),用来装
//Student对象(小容器)
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对象
student.setStuId(stuId);
student.setStuName(stuName);
student.setStuSex(stuSex);
student.setStuAge(stuAge);
student.setStuAddr(stuAddr);
//把当前行封装后的Student对象装载到 List集合中
studentList.add(student);
}
System.out.println(studentList);
//7.回收资源,先关闭rs结果集对象 再pstm预处理对象 最后con连接对象
if(rs!=null){
rs.close();
}
if(pstm!=null){
pstm.close();
}
if(con!=null){
con.close();
}
}
4)添加操作
@Test
public void testAdd() throws Exception {
//1.导入驱动包
//2.通过反射加载驱动程序
Class.forName(driver);
//3.通过驱动管理器获得数据库的连接对象
Connection con = DriverManager.getConnection(url, username, password);
//4.通过连接对象,获取SQ预处理对象
String sql="insert into student(stuName,stuSex,stuAge,stuAddr)values(?,?,?,?)";
PreparedStatement pstm = con.prepareStatement(sql);
//实际开发是前端页面传递过来的数据,此处我们直接模拟一组数据
Student student=new Student();
student.setStuName("天气");
student.setStuSex("男");
student.setStuAge(18);
student.setStuAddr("河中");
//5.1预处理对象的sql语句有 ? 所以需要进行传参
pstm.setObject(1,student.getStuName());
pstm.setObject(2,student.getStuSex());
pstm.setObject(3,student.getStuAge());
stm.setObject(4,student.getStuAddr());
//5.2执行更新(增删改都叫做数据库的更新,更新返回的是影响的行数)
int n = pstm.executeUpdate();
//6判断影响的行数 n > 0 表示插入成功,否则插入失败
if(n>0){
System.out.println("插入数据成功");
}else{
System.out.println("插入数据失败");
}
//7释放资源
if(pstm!=null){
pstm.close();
}
if(con!=null){
con.close();
}
}
5)删除操作
@Test
public void testDel() throws Exception {
//1.导入驱动程序包
//2.通过反射加载驱动程序
Class.forName(driver);
//3.通过驱动管理器获得数据库的连接对象
Connection con = DriverManager.getConnection(url, username, password);
//4.通过数据库连接对象获取sql预处理对象
String sql="delete from student where stuId=?";
PreparedStatement pstm = con.prepareStatement(sql);
//5.1预处理对象的sql语句有 ? ,所以需要传参
int stuId=3; //实际开发是从前端页面获取要删除的id
pstm.setObject(1,stuId);
//5.2执行更新操作(增删改都是更新操作,返回的结果是影响的行数)
int n=pstm.executeUpdate();
//6判断影响的行数 n>0 表示删除成功,否则删除失败
if(n>0){
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
//7释放资源
if(pstm!=null){
pstm.close();
}
if(con!=null){
con.close();
}
}