package com.bwf3;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
public class Demo1 {
/*
MYSQL 属于 关系-对象型 数据库
表 ---- 类 student --- 学生类
列属性 --- 类的成员属性 sid sname sage stime
行数据 ---- 对象
4 | dd | 12 | 2018-01-01 10:20:52 | ---- new Student(4,"dd",12,Date)
一张表 ---- 实体类
保证类的属性 ---- 表的属性 (类型)
*/
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//新增不需要id
// Student s = new Student("h", 10, new Date());
// addStu(s);
//修改的时候 需要id
// Student s = new Student(6,"ff", 14, new Date());
// updateStu(s);
// ArrayList<Student> list = queryStuAll();
//
// for(Student s: list){
// System.out.println(s);
// }
System.out.println(queryStuOne(9));
System.out.println(queryStuOne(100));
}
//查询一个学生 返回学生对象 查询到 返回对象 没查询到 返回null
public static Student queryStuOne(int id) throws ClassNotFoundException, SQLException{
//返回值
Student s = null;
//驱动
Class.forName("com.mysql.jdbc.Driver");
//连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","123");
//sql语句
String sql = "select * from student where sid = ?";
//预处理
PreparedStatement ps = conn.prepareStatement(sql);
//赋值
ps.setInt(1, id);
//获得数据集
ResultSet rs = ps.executeQuery();
if(rs.next()){
s = new Student();//查询到 才初始化
s.id = rs.getInt("sid");
s.name = rs.getString("sname");
s.age = rs.getInt("sage");
s.time = rs.getTimestamp("stime");
}
return s;
}
//查询所有行数据 ---- 学生 ---- 返回集合 ArrayList<Student>
public static ArrayList<Student> queryStuAll() throws ClassNotFoundException, SQLException{
//返回值 默认size = 0
ArrayList<Student> list = new ArrayList<Student>();
//驱动
Class.forName("com.mysql.jdbc.Driver");
//连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","123");
//sql语句
String sql = "select * from student";
//预处理
PreparedStatement ps = conn.prepareStatement(sql);
//获得数据集
ResultSet rs = ps.executeQuery();
Student s = null;
//[0x01,0x01,0x01,0x01]
//每一行数据 ----- 一个对象
while(rs.next()){
s = new Student();//0x01
s.id = rs.getInt("sid");
s.name = rs.getString("sname");
s.age = rs.getInt("sage");
//java.util.Date 父类 ----- Timestamp 子类 多态
s.time = rs.getTimestamp("stime");
list.add(s);
}
return list;
}
//修改 6 | f | 14 | 2018-01-01 10:20:54 | ---- 6 | ff | 14 | 2018-01-01 10:20:54 |
//把修改后的信息 组成一个对象 变的就变了 不变的就不变
public static void updateStu(Student stu) throws ClassNotFoundException, SQLException{
//驱动
Class.forName("com.mysql.jdbc.Driver");
//连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","123");
//sql语句
String sql = "update student set sname = ?,sage = ?,stime = ? where sid = ?";
//预处理
PreparedStatement ps = conn.prepareStatement(sql);
//赋值
ps.setString(1, stu.name);
ps.setInt(2, stu.age);
ps.setTimestamp(3, new Timestamp(stu.time.getTime()));
ps.setInt(4, stu.id);
//同步执行
int row = ps.executeUpdate();
System.out.println(row>0 ? "更新成功":"更新失败");
}
//增加行数据 ---- 把要增加的行数据信息封装到一个对象中 把对象当做参数
public static void addStu(Student stu) throws ClassNotFoundException, SQLException{
//驱动
Class.forName("com.mysql.jdbc.Driver");
//连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","123");
//sql语句
String sql = "insert into student (sname,sage,stime) values(?,?,?)";
//预处理对象
PreparedStatement ps = conn.prepareStatement(sql);
//赋值 要插入的一行信息 都在stu中 id依靠自增
ps.setString(1, stu.name);
ps.setInt(2, stu.age);
ps.setTimestamp(3, new Timestamp(stu.time.getTime()));
//同步执行
int row = ps.executeUpdate();
System.out.println(row>0 ? "插入成功":"插入失败");
//关闭
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
}
}