新建个数据库,建库的时候基字符集我选的是utf8 – UTF-8 Unicode,数据库排序规则utf8_general_ci。因为今天实现的是登录功能,所以建个user表就好,然后就是编辑表了,其中把id设置主键,非空,自增,接着分别设置用户名和密码。
开发工具用的是Eclipse安装了个WindowBuilder插件,数据库可视化工具用的Navicat。新建好项目,然后就先建包,不急着new class,先把包建好老实说会显得逼格高,dao数据库访问层,model实体层,util工具层,view视图层。
先把数据库连接起来,那就在util里写一个DbUtil类实现,这里就运用到jdbc技术了。
新建个folder取名jdbc里面就是放mysql驱动包
然后要右键驱动包Build Path->Add to Build Path这样项目就可以用到它了。然后到敲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";
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;
}
}
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包里新建一个JFrame,进入设计模式,就往里填东西
其中重置功能代码
/**
* 重置事件处理
* @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;
}
}
}