注册:
statement写法 :
public class Register {
public static void main(String[] args) throws SQLException {
//创建键盘录入对象(扫描器)
Scanner sc = new Scanner(System.in);
//创建数组用于存放账号
ArrayList<String> list = new ArrayList<>();
//调用工具类获得连接
Connection connection = JdbcUtils.getConnection();
//创建发送器
Statement st = connection.createStatement();
while (true) {
System.out.println("请输入注册账号");
String name = sc.nextLine();
System.out.println("请输入密码");
String password = sc.nextLine();
//遍历表数据
String sql = "SELECT * FROM user;";
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
String name1 = rs.getString("name");
//将账号添加进list集合
list.add(name1);
}
//如果list集合包含账号,需要重新注册
if (list.contains(name)) {
System.out.println("该账号已经被注册,请重新注册");
continue;
} else {
String sq2 = "insert into user(name,password)values('" + name + "','" + password + "')";
int num = st.executeUpdate(sq2);
System.out.println("恭喜注册成功");
JdbcUtils.close(st, connection);
break;
}
}
}
}
preparedstatement的作用:
1.解决statement存在的注入问题
2.提高程序可读性
3.一条sql语句重复执行多次时,提高效率
(MySQL 不明显,Oracle 非常明显)
备注:此文章有用到工具类,工具类在其他的文章里,如有需要自行搜索,请谅解
preparedstatement写法 :
public class Register {
public static void main(String[] args) throws SQLException {
//创建键盘录入对象(扫描器)
Scanner sc = new Scanner(System.in);
//创建数组用于存放账号
ArrayList<String> list = new ArrayList<>();
//调用工具类获得连接
Connection connection = JdbcUtils.getConnection();
//创建发送器
Statement st = connection.createStatement();
while (true) {
System.out.println("请输入注册账号");
String name = sc.nextLine();
System.out.println("请输入密码");
String password = sc.nextLine();
//遍历表数据
String sql = "SELECT * FROM user;";
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
String name1 = rs.getString("name");
//将账号添加进list集合
list.add(name1);
}
//如果list集合包含账号,需要重新注册
if (list.contains(name)) {
System.out.println("该账号已经被注册,请重新注册");
continue;
} else {
//否则,注册成功
connection = JdbcUtils.getConnection();
String sq2 = "insert into user(name,password)values(?,?)";
PreparedStatement ps = connection.prepareStatement(sq2);
ps.setString(1, name);
ps.setString(2, password);
ps.executeUpdate();
System.out.println("恭喜注册成功");
//调用工具类关连接
JdbcUtils.close(st, connection);
break;
}
}
}
}
登录:
public class Login {
public static void main(String[] args) throws Exception {
//创建扫描器
Scanner scanner = new Scanner(System.in);
System.out.println("请输入账号:");
String userName = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
//把用户名与密码给login方法判断还用户名与密码是否存在
boolean flag = login(userName,password);
if(flag){
//如果返回的是true ,用户名与密码正确
System.out.println("欢迎:"+ userName+"登陆成功");
}else{
System.out.println("用户名不存在或者密码错误!");
}
}
//查询数据库是否存在指定的用户名与密码
private static boolean login(String userName, String password) throws Exception {
Connection connection = JDBCUtils.getConnection();
//获取sql运输器
String sql = "select * from user where name='"+userName+"' and password='"+password+"'";
Statement st = connection.createStatement();
//执行sql
ResultSet rs = st.executeQuery(sql);
//如果根据上述用户名与密码能够查询出数据,那么指针可以往下移动,返回tue。如果不能够移动,那么意味着没有查询数据,返回false.
return rs.next();
}
}