目录
1、封装数据返回
1.1、编写实体类 Person
package com.zhou.exercise;
public class Person {
private int id;
private String name;
private String email;
private String addr;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", addr='" + addr + '\'' +
'}';
}
}
1.2、编写jdbc代码
package com.zhou.exercise;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class JDBC_queryForObj {
public static void main(String[] args) {
// 调用方法
List<Person> personList = findAll();
// 遍历集合
for (Person person : personList) {
System.out.println(person);
}
}
// 定义一个查询数据的方法
public static List<Person> findAll() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
// 定义装载Person的集合
List<Person> list = new ArrayList<Person>();
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///day10", "root", "123456");
String sql = "select * from person";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
Person person = new Person(); // 将person提到外面
int id = rs.getInt(1);
String name = rs.getString(2);
String email = rs.getString(3);
String addr = rs.getString(4);
person.setId(id);
person.setName(name);
person.setEmail(email);
person.setAddr(addr);
list.add(person);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 返回list
return list;
}
}
2、简单登录逻辑
package com.zhou.exercise;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class JDBC_login {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = scanner.next();
System.out.println("请输入密码:");
String password = scanner.next();
// 调用方法 判断
boolean login = login(username, password);
if (login){
System.out.println("登录成功!");
}else {
System.out.println("登陆失败!");
}
}
// 定义一个查询数据的方法
public static boolean login(String username, String password) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
// 定义装载Person的集合
List<Person> list = new ArrayList<Person>();
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///day10", "root", "123456");
String sql = "select * from user where username = ? and password = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
// rs.next的返回值是一个布尔值 正好是我们所需要的 true:表示当前行不是最后一行 有数据 false 表示当前行是最后一行 没有数据了
// 表示查询的数据不是空 证明根据username和password可以查到相关记录
return rs.next();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return false; // 如果try里面的返回了 那么改代码不会执行
}
}