话不多说,直接开始。
以一个简单的用户表为例,我将从导入jar包开始到最后实现,完全给大家讲解清楚。
1.创建项目,导入相关包
首先在Idea上新建Java项目,在web——》web-INF文件夹下创建lib文件夹,将jar包放到该文件夹下,之后右键点击jar包,选择generate选项,弹出对话框不用修改点击确定即可。这样jar包就导入完成了
2.数据库创建
创建数据库,建立用户数据表,将id字段设为主键
到这里为止,前期的准备工作就都完成了,接下来就可以开始我们的代码编写工作了
我先把文件的结构放在这
实体类
首先我们要构造一个实体类,把数据库中的字段映射到我们的代码中
package com.zhongruan;
//实体类 映射数据库字段
public class User {
//1.对属性的封装
private int id;//用户ID
private String username;//用户名
private String password;//用户密码
//2.对getter and setter
//自动生成,右键generator——》getter and setter
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//3.构造方法
//shift键,全选
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
//Ctrl键取消选择
public User() {
}
//4.toString方法的重写
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
工具类
在这个类里面主要是编写连接数据库的一些属性值和函数
package com.zhongruan;
import java.sql.*;
public class DBUtil {
//对于属性的封装
private static String driver="com.mysql.jdbc.Driver";
private static String url="jdbc:mysql://localhost:3306/java7?userSSL=true&utf8characterEncoding=utf-8&user=root&password=123";
private static String user="root";
private static String password="123";
//1.获取驱动
static{
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//2.创建连接
public static Connection get_Conn() throws SQLException {
Connection conn = DriverManager.getConnection(url, user, password);
// System.out.println("数据库连接成功"+conn);
return conn;
}
//3.关闭连接
public static void get_CloseConn(ResultSet rs, PreparedStatement pstm, Connection conn) throws SQLException {
if(rs!=null){
rs.close();
}
if(pstm!=null){
pstm.close();
}
if(conn!=null){
conn.close();
}
}
public static void main(String[] args){
try {
get_Conn();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
测试类
这里面主要是实现增删改查的操作函数以及主函数,其中主函数以菜单的形式将上述各功能进行整合,可以在控制台进行选择,进行输入输出对数据库中的数据进行操作
直接放代码
package com.zhongruan;
import java.util.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import static javafx.application.Platform.exit;
public class TestUser2 {
Connection conn=null;
PreparedStatement pstm=null;
ResultSet rs=null;
//1.增加
public void addUser(User user) {
String sql = "insert into tb_user(username,password) values(?,?)";
try {
//1.获取连接
conn = DBUtil.get_Conn();
//2.获取存放sql语句的对象
pstm = conn.prepareStatement(sql);
//3.填坑
pstm.setString(1,user.getUsername());
pstm.setString(2,user.getPassword());
//4.执行sql并得到结果
int i = pstm.executeUpdate();
//5.处理结果
if(i>0){
System.out.println("增加成功");
}else{
System.out.println("增加失败");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
//6.关闭连接
try{
DBUtil.get_CloseConn(null,pstm,conn);
}catch(SQLException e){
e.printStackTrace();
}
}
}
//2.删除
public void deleteUser(User user){
// String sql = "delete from tb_user where username='%"+name+"%'";
String sql = "delete from tb_user where username=?";
try {
//1.获取连接
conn = DBUtil.get_Conn();
//2.获取存放sql语句的对象
pstm = conn.prepareStatement(sql);
//填坑
pstm.setString(1,user.getUsername());
//3.执行sql并得到结果
int i=pstm.executeUpdate();
//4.处理结果
if(i>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
//5.关闭连接
try{
DBUtil.get_CloseConn(null,pstm,conn);
}catch(SQLException e){
e.printStackTrace();
}
}
}
//3.修改
public void updateUser(User user){
String sql = "update tb_user set password=? where username=?";
try {
conn = DBUtil.get_Conn();
pstm = conn.prepareStatement(sql);
//填坑
pstm.setString(1,user.getPassword());
pstm.setString(2,user.getUsername());
int i = pstm.executeUpdate();
if(i>0){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try{
DBUtil.get_CloseConn(null,pstm,conn);
}catch(SQLException e){
e.printStackTrace();
}
}
}
//4.查询用户列表
public void selectAllUser(){
String sql = "select * from tb_user";
try {
conn = DBUtil.get_Conn();
pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
while(rs.next()){
System.out.print("用户ID\t用户名\t用户密码\n");
System.out.print(rs.getInt(1)+"\t\t"+rs.getString(2)+"\t"+rs.getString(3)+"\n");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try{
DBUtil.get_CloseConn(rs,pstm,conn);
}catch(SQLException e){
e.printStackTrace();
}
}
}
//5.依据关键字查询用户
public void selectUser(String name){
String sql = "select * from tb_user where username like '%"+name+"%'";
try {
conn = DBUtil.get_Conn();
pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
while(rs.next()){
System.out.print("用户ID\t用户名\t用户密码\n");
System.out.print(rs.getInt(1)+"\t\t"+rs.getString(2)+"\t"+rs.getString(3));
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try{
DBUtil.get_CloseConn(rs,pstm,conn);
}catch(SQLException e){
e.printStackTrace();
}
}
}
//查找指定用户
public int selectOneUser(String name){
String sql = "select * from tb_user where username like '%"+name+"%'";
try {
conn = DBUtil.get_Conn();
pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
while(rs.next()){
return 1;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try{
DBUtil.get_CloseConn(rs,pstm,conn);
}catch(SQLException e){
e.printStackTrace();
}
}
return 0;
}
//打印菜单
public static void printMenu(){
System.out.println("菜单");
System.out.println("1.增加用户");
System.out.println("2.删除用户");
System.out.println("3.修改用户密码");
System.out.println("4.查找指定用户");
System.out.println("5.输出用户信息列表");
System.out.println("0.退出");
System.out.println("请输入菜单选项:");
}
public static void main(String[] args){
TestUser2 t2 = new TestUser2();
Scanner scan = new Scanner(System.in);
int item;
printMenu();
item = scan.nextInt();
while(item!=0){
switch(item){
case 1:
System.out.print("请输入要添加的用户名:");
String addName = scan.next();
while(t2.selectOneUser(addName) != 0){
System.out.print("该用户名已存在,请重新输入:");
addName = scan.next();
}
System.out.print("请输入该用户的密码:");
String addPass = scan.next();
User user = new User(addName,addPass);
t2.addUser(user);
break;
case 2:
System.out.print("请输入要删除的用户的用户名:");
String dltName = scan.next();
User dltUser = new User(dltName,null);
t2.deleteUser(dltUser);
break;
case 3:
System.out.print("请输入要修改的用户的用户名:");
String updateName = scan.next();
System.out.print("请输入新密码:");
String newPass = scan.next();
User upUser = new User(updateName,newPass);
t2.updateUser(upUser);
break;
case 4:
System.out.print("请输入要查询的用户名关键字:");
String sltName = scan.next();
t2.selectUser(sltName);
break;
case 5:
t2.selectAllUser();
break;
}
printMenu();
item = scan.nextInt();
}
exit();
}
}
最后给大家看一下运行的效果图