一、准备工作:
1、创建名为lib的Folder文件,将mysql-connector-java-5.1.44-bin.jar包复制到lib文件里,再单击鼠标右键,点击Build Path/Add to Build Path。
2、在MySQL数据库实例test中创建名为student的表。
二、编写代码:
1、com.zzu.tool包中的类:
package com.zzu.tool.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBLink {
private Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://127.0.0.1:3306/test";
return DriverManager.getConnection(url,"root","root");
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
public boolean update(String sql) {
Connection connection = null;
Statement statement = null;
try {
connection = getConnection();
statement = connection.createStatement();
int affect = statement.executeUpdate(sql);
return affect>0;
} catch (Exception e) {
e.printStackTrace();
}finally {
close(statement,connection);
}
return false;
}
public void select(String sql,IRowMapper rowMapper) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
rowMapper.rowMapper(resultSet);
} catch (Exception e) {
e.printStackTrace();
} finally {
close(resultSet,statement,connection);
}
}
public boolean exist(String sql) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
return resultSet.next();
} catch (Exception e) {
e.printStackTrace();
} finally {
close(resultSet,statement,connection);
}
return false;
}
private void close(Statement statement,Connection connection) {
try {
if(statement!=null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(connection!=null) {
connection.close();
}
}catch (SQLException e) {
e.printStackTrace();
}
}
private void close(ResultSet resultSet,Statement statement,Connection connection) {
try {
if(resultSet!=null) {
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
close(statement,connection);
}
}
package com.zzu.tool.db;
import java.sql.ResultSet;
@FunctionalInterface
public interface IRowMapper {
void rowMapper(ResultSet rs);
}
2、com.zzu.main包里的类:
package com.zzu.main;
import java.sql.SQLException;
import java.util.Scanner;
import com.zzu.tool.db.DBLink;
public class Main {
private static DBLink db = new DBLink();
public static void main(String[] args) {
System.out.println("*********************************");
System.out.println("*\t\t\t\t*");
System.out.println("*\t欢迎使用学生信息管理系统\t*");
System.out.println("*\t\t\t\t*");
System.out.println("*********************************");
while (true) {
menu();
}
}
static void menu() {
System.out.println("1、添加学生信息");
System.out.println("2、删除学生信息");
System.out.println("3、修改学生信息");//地址传递
System.out.println("4、查询学生信息");//name
System.out.println("请输入操作,以Enter键结束:");
Scanner scanner = new Scanner(System.in);
int option = scanner.nextInt();
switch (option) {
case 1:{
System.out.println("请输入学生学号,点击Entry键");
String id = scanner.next();
String sql = "select id,name,mobile,address from student where id ='"+id+"'";
if(db.exist(sql)) {
System.out.println("学号已存在,操作终止!");
return;
}
System.out.println("请输入学生姓名,点击Entry键");
String name = scanner.next();
System.out.println("请输入学生手机号码,点击Entry键");
String mobile = scanner.next();
System.out.println("请输入学生家庭地址,点击Entry键");
String address = scanner.next();
sql = "insert into student(id,name,mobile,address) values('"+id+"','"+name+"','"+mobile+"','"+address+"')";
if(db.update(sql)) {
System.out.println("添加成功!");
return;
}
System.out.println("添加失败!");
break;
}
case 2:{
System.out.println("请输入要删除学生的学号,点击Enter键");
String id = scanner.next();
String sql = "select name from student where id = '"+id+"'";
if(!db.exist(sql)) {
System.out.println("学号不存在,操作终止!");
return;
}
sql = "delete from student where id = '"+id+"'";
if(db.update(sql)) {
System.out.println("删除成功!");
return;
}
System.out.println("删除失败!");
break;
}
case 3:{
System.out.println("请输入要修改学生的学号,点击Enter键");
String id = scanner.next();
String sql = "select name from student where id = '"+id+"'";
if(!db.exist(sql)) {
System.out.println("学号不存在,操作终止!");
return;
}
System.out.println("请输入新的姓名,点击Enter键");
String name = scanner.next();
System.out.println("请输入新的手机号码,点击Enter键");
String mobile = scanner.next();
System.out.println("请输入新的家庭地址,点击Enter键");
String address = scanner.next();
sql = "update student set name='"+name+"', mobile='"+mobile+"', address='"+address+"' where id='"+id+"'";
if(db.update(sql)) {
System.out.println("修改成功!");
return;
}
System.out.println("修改失败!");
break;
}
case 4:{
System.out.println("请输入要查询学生的学号,点击Enter键");
String id = scanner.next();
String sql = "select name from student where id = '"+id+"'";
if(!db.exist(sql)) {
System.out.println("学号不存在,操作终止!");
return;
}
sql = "select id,name,mobile,address from student where id='"+id+"'";
//1、有名内部类
/*class RowMapper implements IRowMapper{
@Override
public void rowMapper(ResultSet rs) {
try {
if(rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
String mobile = rs.getString("mobile");
String address = rs.getString("address");
System.out.println(id+","+name+","+mobile+","+address);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
RowMapper rowMapper = new RowMapper();
db.select(sql, rowMapper);
//db.select(sql,new RowMapper());//以上两行可以改写为这一行 */
//2、匿名内部类
/*IRowMapper rowMapper = new IRowMapper(){
@Override
public void rowMapper(ResultSet rs) {
try {
if(rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
String mobile = rs.getString("mobile");
String address = rs.getString("address");
System.out.println(id+","+name+","+mobile+","+address);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
};
db.select(sql, rowMapper);*/
/*db.select(sql, new IRowMapper() {
@Override
public void rowMapper(ResultSet rs) {
try {
if(rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
String mobile = rs.getString("mobile");
String address = rs.getString("address");
System.out.println(id+","+name+","+mobile+","+address);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
});*/
//3、lambda表达式
db.select(sql, (rs) -> {
try {
if(rs.next()) {
//id = rs.getString("id");
String name = rs.getString("name");
String mobile = rs.getString("mobile");
String address = rs.getString("address");
System.out.println(id+","+name+","+mobile+","+address);
}
} catch (SQLException e) {
e.printStackTrace();
}
});
break;
}
default:
System.out.println("I'm Sorry,there is not the "+option+" option,please try again.");
}
}
}