参考上一篇“访问显示数据库的信息(JDBC)”。对上一篇补充了判断登陆(用select查询),在数据表中插入信息的代码。
package com.kgy.entity;
public class User {
private int id;
private String username;
private String password;
private int ident;
private String telephone;
private String address;
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;
}
public int getIdent() {
return ident;
}
public void setIdent(int ident) {
this.ident = ident;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public User(int id, String username, String password, int ident, String telephone, String address) {
super();
this.id = id;
this.username = username;
this.password = password;
this.ident = ident;
this.telephone = telephone;
this.address = address;
}
public User() {
super();
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + ", ident=" + ident
+ ", telephone=" + telephone + ", address=" + address + "]";
}
}
package com.kgy.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
public static Connection getConnection() {
Connection con = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");//这是8.0版本的,具有兼容5.0版本的优势,mysql.connector.5.1.5-bin.jar 驱动器用com.mysql.jdbc.Driver
// System.out.println("1驱动加载成功!");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/meal?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false", "root", "123456");
// System.out.println("2,建立连接");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
return con;
}
public static void closeConnection(ResultSet rs,Statement st,Connection con) {
try {
if(rs!=null) {
rs.close();
}
if(st!=null) {
st.close();
}
if(con!=null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package com.kgy.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.FormatFlagsConversionMismatchException;
import java.util.List;
import com.kgy.entity.User;
import com.kgy.util.DBUtil;
//database access object
public class UserDao {
//用链表获取
public List<User> getAllUser(){
List<User> list = new ArrayList<User>();
try {
Connection con = DBUtil.getConnection();
String sql="select * from user";//增删改查 insert into user values(),delete user ,update user set ,select
Statement st = con.createStatement();
System.out.println("3,创建语句对象");
ResultSet rs = st.executeQuery(sql);//��ɾ�ĵĺ�����executeUpdate(sql)
System.out.println("4,产生结果集");
while(rs.next()) {
User user = new User();
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setIdent(rs.getInt(4));
user.setTelephone(rs.getString(5));
user.setAddress(rs.getString(6));
list.add(user);
}
DBUtil.closeConnection(rs, st, con);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
//判断登录
public boolean login(User user) {
boolean flag = false;
User u = null;
//直接写selsct查询出是否有该用户
try {
Connection con = DBUtil.getConnection();
//select * from user where username='admin' and `password`='admin'
String sql = "select * from user where username='"+user.getUsername()+"' and password='"+user.getPassword()+"'";//在user表中查询username和password
System.out.println(sql); //输出selsct语句
//statement对象用于执行sql语句
Statement st= con.createStatement();
//创建结果集合,来存放查询的结果到rs里面
ResultSet rs = st.executeQuery(sql);
if(rs.next()) {//判断结果集rs是否有记录,并且将指针后移一位
flag=true;
}
DBUtil.closeConnection(null, st, con);
}catch (SQLException e) {
e.printStackTrace();
}
return flag;
}
// 插入
public boolean inert(User user) {
boolean flag = false;
try {
Connection con=DBUtil.getConnection();
String sql= "insert into user values("+user.getId()+",'"+user.getUsername()+"','"+user.getPassword()+"',"+user.getIdent()+",'"+user.getTelephone()+"','"+user.getAddress()+"')";
Statement st=con.createStatement();
int rs=st.executeUpdate(sql);//这里返回了1,因为我们只是插入了一行,只影响了一行
if(rs>0) {//只要rs大于零就说明插入成功了
flag=true;
}
DBUtil.closeConnection(null, st, con);
}catch (SQLException e) {
e.printStackTrace();
}
return flag ;
}
public static void main(String[] args) {
UserDao ud = new UserDao();
List<User> list = ud.getAllUser();
for (User user : list) {
System.out.println(user);
}
//调用login,判断下面这个user是否能登录
User user = new User(1,"admin","admin",0,"1","1");
if(ud.login(user)) {//同理
System.out.println("用户名密码不正确!");
}else {
System.out.println("欢迎您!"+user.getUsername());
}
//调用inert,将下面的用户插入到数据库
User user2 = new User(6,"张三","Zhangsan",1,"123","123");
if(ud.inert(user2)) {//都是布尔类型了,不需要判断
System.out.println("用户注册成功!");
}else {
System.out.println("注册失败!");
}
}
}