Java图书管理系统(swing+jdbc+mysql)登录功能实现

新建数据库

新建个数据库,建库的时候基字符集我选的是utf8 – UTF-8 Unicode,数据库排序规则utf8_general_ci。因为今天实现的是登录功能,所以建个user表就好,然后就是编辑表了,其中把id设置主键,非空,自增,接着分别设置用户名和密码。Java图书管理系统(swing+jdbc+mysql)登录功能实现_第1张图片

新建个Java项目

开发工具用的是Eclipse安装了个WindowBuilder插件,数据库可视化工具用的Navicat。新建好项目,然后就先建包,不急着new class,先把包建好老实说会显得逼格高,dao数据库访问层,model实体层,util工具层,view视图层。
Java图书管理系统(swing+jdbc+mysql)登录功能实现_第2张图片
先把数据库连接起来,那就在util里写一个DbUtil类实现,这里就运用到jdbc技术了。
新建个folder取名jdbc里面就是放mysql驱动包
Java图书管理系统(swing+jdbc+mysql)登录功能实现_第3张图片
然后要右键驱动包Build Path->Add to Build Path这样项目就可以用到它了。然后到敲DbUtil类,直接上代码了

DbUtil类

package com.amos.util;

import java.sql.Connection;
import java.sql.DriverManager;

/*
 * 数据库工具类
 * @author amos0602
 */
public class DbUtil {
	
	private String dbUrl="jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8";//数据库连接地址
	private String dbUserName="root";//用户名
	private String dbPassWord="123456";//密码
	private String jdbcName="com.mysql.cj.jdbc.Driver";//驱动名称
	
    //获取数据库连接
	public Connection getConnection()throws Exception{
		Class.forName(jdbcName);
		Connection connection=DriverManager.getConnection(dbUrl, dbUserName, dbPassWord);
		return connection;
	}
	//关闭数据库连接
	public void closeConnection(Connection connection)throws Exception {
		if (connection!=null) {
			connection.close();
		}
	}
	public static void main(String[] args) {
		DbUtil dbUtil=new DbUtil();
		try {
			dbUtil.getConnection();
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
}

一个小点

//这里我开始写的是这个
private String jdbcName="com.mysql.jdbc.Driver";
//后面他说弃用了,要用下面这个
private String jdbcName="com.mysql.cj.jdbc.Driver";

实体类User

package com.amos.model;
/**
 * 用户实体
 * @author Amos0602
 *
 */
public class User {
	private int id;
	private String userName;
	private String userPassWord;
	
	public User() {
		super();
		// TODO 自动生成的构造函数存根
	}
	
	
	public User(String userName, String userPassWord) {
		super();
		this.userName = userName;
		this.userPassWord = userPassWord;
	}


	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 getUserPassWord() {
		return userPassWord;
	}
	public void setUserPassWord(String userPassWord) {
		this.userPassWord = userPassWord;
	}
	
}

UserDao类

package com.amos.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.amos.model.User;

/**
 * 用户Dao类
 * @author Amos0602
 *
 */
public class UserDao {
	/**
	 * 登录验证
	 * @param connection
	 * @param user
	 * @return
	 * @throws Exception
	 */
	public User login(Connection connection,User user)throws Exception {
		User resultUser=null;
		String sql="select * from t_user where userName=? and password=?";
		PreparedStatement pstmt= connection.prepareStatement(sql);
		pstmt.setString(1, user.getUserName());
		pstmt.setString(2, user.getUserPassWord());
		ResultSet rs=pstmt.executeQuery();
		if(rs.next()) {
			resultUser=new User();
			resultUser.setId(rs.getInt("id"));
			resultUser.setUserName(rs.getString("userName"));
			resultUser.setUserPassWord(rs.getString("password"));
		}
		return resultUser;
	}
}

view层

view包里新建一个JFrame,进入设计模式,就往里填东西
Java图书管理系统(swing+jdbc+mysql)登录功能实现_第4张图片
Java图书管理系统(swing+jdbc+mysql)登录功能实现_第5张图片
其中重置功能代码

/**
	 * 重置事件处理
	 * @param arg0
	 */
	private void resetValueActionPerformed(ActionEvent arg0) {
		// TODO 自动生成的方法存根
		this.userNameTxt.setText("");
		this.passWordTxt.setText("");
	}

登录功能

/**
	 * 登录事件处理
	 * @param arg0
	 */
	private void loginActionPerFormed(ActionEvent arg0) {
		String userName=this.userNameTxt.getText();
		String password=new String( this.passWordTxt.getPassword());
		if (StringUtil.isEmpty(userName)) {
			JOptionPane.showMessageDialog(null, "用户名不能为空");
			return;
		}
		if (StringUtil.isEmpty(password)) {
			JOptionPane.showMessageDialog(null, "密码不能为空");
			return;
		}
		User user=new User(userName,password);
		Connection connection=null;
		try {
			connection=dbUtil.getConnection();
			User currentUser=userDao.login(connection, user);
			if (currentUser!=null) {
				JOptionPane.showMessageDialog(null, "登录成功");
			}else {
				JOptionPane.showMessageDialog(null, "用户名或者密码错误");
			}
			
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}

还有一个此处用到判空的工具类,下面上封装好的代码

package com.amos.util;
/**
 * 字符串工具类
 * @author Amos0602
 *
 */
public class StringUtil {
	public static boolean isEmpty(String string) {
		if (string==null||"".equals(string.trim())) {
			return true;
		}else {
			return false;
		}
	}
	public static boolean isNotEmpty(String string) {
		if (string!=null&&"".equals(string.trim())) {
			return true;	
		} else {
			return false;
		}
	}
}

看一下效果吧

Java图书管理系统(swing+jdbc+mysql)登录功能实现_第6张图片
Java图书管理系统(swing+jdbc+mysql)登录功能实现_第7张图片
收工,告辞

你可能感兴趣的:(Java图书管理系统(swing+jdbc+mysql)登录功能实现)