使用用户登录例子来区别Statement和PreparedStatement
需要使用Statement的例子在这里
import java.util.HashMap;
import java.sql.*;
import java.util.Map;
import java.util.Scanner;
public class LoginTest {
public static void main(String[] args) {
Map<String,String> userLoginInfo = initUI();
boolean loginSuccess = login(userLoginInfo);
System.out.println(loginSuccess ? "登录成功" : "登录失败");
}
private static boolean login(Map<String, String> userLoginInfo) {
boolean loginSuccess = false;
String loginName = userLoginInfo.get("loginName");
String loginPwd = userLoginInfo.get("loginPwd");
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user","root","123456");
String sql = "select * from user where loginName = ? and loginPwd = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, loginName);
ps.setString(2, loginPwd);
rs = ps.executeQuery();
if(rs.next()) {
loginSuccess = true;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(rs != null) {
rs.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
try {
if(ps != null) {
ps.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
try {
if(conn != null) {
conn.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
}
return loginSuccess;
}
private static Map<String, String> initUI() {
Scanner tf = new Scanner(System.in);
System.out.println("用户名:");
String loginName = tf.nextLine();
System.out.println("密码:");
String loginPwd = tf.nextLine();
Map<String,String> userLoginInfo = new HashMap<String,String>();
userLoginInfo.put("loginName", loginName);
userLoginInfo.put("loginPwd", loginPwd);
return userLoginInfo;
}
}