创建数据库
在SQLyog中创建数据库
CREATE DATABASE db14;
USE db14;
CREATE TABLE student(
sid INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
age INT,
birthday DATE
);
INSERT INTO student VALUES (NULL,'李现',31,'1991-10-19'),(NULL,'陆珊',17,'2004-10-07'),(NULL,'梨馅',31,'1991-09-12'),
(NULL,'陆珊珊',17,'2004-08-24');
编写程序
- 定义一个DB_Helper类
package mysql_conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DB_Helper {
public static final String URL="jdbc:mysql://localhost:3306/db14";
public static final String USERNAME="root";
public static final String PASSWORD="666";
public static Connection conn;//定义数据库连接对象
//生成数据库连接对象
public static Connection getConn(){
try {
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//获取数据库的连接,若连接成功,则返回一个Connection数据库连接对象
try {
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
}catch (ClassNotFoundException e){
e.printStackTrace();
}
return conn;
}
//关闭数据库连接,释放资源
public static void closeConn(Connection conn){
if (conn!=null){
try {
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
//main函数进行测试
System.out.println(DB_Helper.getConn());
}
}
- 定义Emp类
package entity;
import java.util.Date;
public class Emp {
private Integer sid;
private String name;
private Integer age;
private String birthday;
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public Emp(int sid, String name, int age, String birthday) {
this.sid = sid;
this.name = name;
this.age = age;
this.birthday = birthday;
}
public Emp() {
//super();
}
}
- 定义接口类Emp_dao
import java.util.List;
public interface Emp_dao {
}
- 定义Emp.impl类
public class Emp_impl implements Emp_dao {
}
- 定义Test类
public class Test {
public static void main(String[] args) {
}
① 查询所有用户
- 在接口类Emp_dao中定义方法
// 查询所有的用户信息,并返回
public List<Emp> findAllUser();
- 在类Emp_impl中添加实现接口的方法
// 定义查询所有用户信息的实现类
@Override
public List<Emp> findAllUser() {
List<Emp> lists = new ArrayList<Emp>();
// 1、获得数据库的连接对象
Connection conn = DB_Helper.getConn();
// 2、书写SQL语句操作数据表
String sql = "select * from student";
// 3、预编译SQL语句
try {
PreparedStatement pps = conn.prepareStatement(sql);
// 4、执行查询命令
ResultSet resultSet = pps.executeQuery();
// 5、循环读取结果集中的数据
while (resultSet.next()){ // 如果结果集中有数据返回true
// 6、 把结果集中的数据读取出来赋值给用户的属性
Emp emp = new Emp();
emp.setSid(resultSet.getInt(1));
emp.setName(resultSet.getString(2));
emp.setAge(resultSet.getInt(3));
emp.setBirthday(resultSet.getString(4));
lists.add(emp);
}
} catch (SQLException e) {
e.printStackTrace();
}
return lists;
}
- 在Test类中调用方法
// 查询到所有的用户
Emp_impl eil = new Emp_impl();
List<Emp> lists = eil.findAllUser();
for (Emp emp : lists) {
System.out.println(emp.getSid()+"\t"+emp.getName()+"\t"+emp.getAge()+"\t"+emp.getBirthday());
}
② 删除某个信息
- 在接口类Emp_dao中定义方法
public int deleteUser(int sid);
- 在类Emp_impl中添加实现接口的方法
@Override
public int deleteUser(int sid){
int result=0;
Connection conn=DB_Helper.getConn();
String sql="delete FROM student WHERE sid=?";
try {
PreparedStatement pps=conn.prepareStatement(sql);
pps.setInt(1,sid);
result=pps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}
return result;
}
- 在测试类Test中调用方法
int result02=eil.deleteUser(5);
if (result02>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
int result03=eil.updateUser(new Emp(4,"李现",18,"2004-10-19"));
if (result03>0){
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
③ 增加信息
- 在接口类Emp_dao中定义方法
public int addUser(Emp emp);
- 在接口实现类Emp_impl中添加实现接口的方法
@Override
public int addUser(Emp emp){
int result=0;
Connection conn= DB_Helper.getConn();
String sql="insert into student(sid,name,age,birthday) values(?,?,?,?)";
try{
PreparedStatement pps=conn.prepareStatement(sql);
pps.setInt(1,emp.getSid());
pps.setString(2,emp.getName());
pps.setInt(3,emp.getAge());
pps.setString(4, emp.getBirthday());
result=pps.executeUpdate();
}catch(SQLException e){
e.printStackTrace();
}
return result;
}
- 在Test类中调用方法
int result01=eil.addUser(new Emp(5,"陆某某",17,"2004-10-19"));
if(result01>0){
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
④ 修改信息
- 在接口类Emp_dao中定义方法
public int updateUser(Emp emp);
- 在接口实现类Emp_impl中添加实现接口的方法
@Override
public int deleteUser(int sid){
int result=0;
Connection conn=DB_Helper.getConn();
String sql="delete FROM student WHERE sid=?";
try {
PreparedStatement pps=conn.prepareStatement(sql);
pps.setInt(1,sid);
result=pps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}
return result;
}
- 在Test类中调用方法
int result03=eil.updateUser(new Emp(4,"李现",18,"2004-10-19"));
if (result03>0){
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
⑤ 查询指定的编号对应的信息
- 在接口类Emp_dao中定义方法
public Emp findUserById(int id);
- 在接口实现类Emp_impl中添加实现接口的方法
// 定义查询某个用户信息的实现类
@Override
public Emp findUserById(int sid) {
Emp emp = null;
// 1、获得数据库的连接对象
Connection conn = DB_Helper.getConn();
// 2、书写SQL语句操作数据表
String sql = "select * from student WHERE sid=?";
// 3、预编译SQL语句
try {
PreparedStatement pps = conn.prepareStatement(sql);
// 4、给SQL语句占位符赋值
pps.setInt(1,sid);
// 5、执行查询命令
ResultSet resultSet = pps.executeQuery();
// 6、循环读取结果集中的数据
while (resultSet.next()){ // 如果结果集中有数据返回true
// 7、 把结果集中的数据读取出来赋值给用户的属性
emp = new Emp();
emp.setSid(resultSet.getInt(1));
emp.setName(resultSet.getString(2));
emp.setAge(resultSet.getInt(3));
emp.setBirthday(resultSet.getString(4));
}
} catch (SQLException e) {
e.printStackTrace();
}
return emp;
}
- 在Test类中调用方法
Scanner scanner = new Scanner(System.in);
System.out.println("请输入想要查询的编号:");
int number = scanner.nextInt();
Emp user = eil.findUserById(number);
if (user!=null){
System.out.println(user.getSid() + "\t" + user.getName() + "\t" + user.getAge() + "\t" + user.getBirthday());
}