方法1、直接设置用户名及密码登录
public static void main(String[] args) {
//用户名及密码
String username = "123456798";
String passward = "123456";
//键盘输入
for (int i=0;i<3;i++){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String s1 = scanner.nextLine();
System.out.println("请输入密码:");
String s2 = scanner.nextLine();
if (s1.equals(username) && s2.equals(passward)){
//&&:逻辑与运算符,将两个表达式连接成一个。两个表达式必须都为 true,整个表达式才为 true
System.out.println("登录成功");
break;
}else if (2-i == 0){
System.out.println("输入次数已达上限,请五分钟后再试");
}else { //2,1,0 i:0,1,2
System.out.println("登录失败,你还有"+(2-i)+"次机会");
}
}
}
方法2、连接数据库用户登录
//JDBC工具类
public class JDBCUTILS {
private static String url;//局部变量提供到成员的位置,声明3个成员变量
private static String user;
private static String password;
private static String driver; //把配置文件的driver读进来,变成通用的,声明成员变量driver
//文件的读取,只需要读取一次即可拿到这些值,使用静态代码块,静态代码块随着类的加载而加载,只执行1次
static { //读取资源文件,获取值
try {
//创建Properties集合类
Properties pro = new Properties();
//classLoader类加载器,获取src路径下的文件
ClassLoader classLoader = JDBCUTILS.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties"); //定义文件的绝对路径
String path = res.getPath();//获取字符串路径
//System.out.println(path);
//加载文件
// pro.load(new FileReader("src/jdbc.properties")); src/jdbc.properties:src下面的jdbc.properties
// pro.load(new FileReader("D:\\java file\\demo\\src\\com\\dmeo3\\src\\jdbc.properties")); 绝对路径
pro.load(new FileReader(path));
//获取数据,赋值
url = pro.getProperty("url");//"url"要和配置文件jdbc.properties的名字一样
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//抽取一个方法释放资源
public static void close(Statement stmt,Connection conn){
if (stmt != null){
try {
stmt.close(); //先释放小的,再释放大的
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//抽取一个方法获取连接对象
public static Connection getConnection() throws SQLException { //获取连接,返回return连接对象
// return null; 占位,不报错
return DriverManager.getConnection(url,user,password); //把这个局部变量变成成员变量,静态代码块给成员变量一赋值这儿就能用了
}
//抽取一个方法释放资源.重载的形式
public static void close(ResultSet rs,Statement stmt,Connection conn){
if (rs != null){
try {
rs.close(); //先释放小的,再释放大的
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null){
try {
stmt.close(); //先释放小的,再释放大的
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
src下面右键新建文件jdbc.properties
url=jdbc:mysql:///db1
user=root
password=root
driver=com.mysql.jdbc.Driver
public class Test {
public static void main(String[] args) {
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
//调用方法,login是非静态方法,创建对象
boolean flag = new com.dmeo3.Test().login(username,password);
//判断结果,输出不同语句
if (flag){ //登录成功
System.out.println("登录成功");
}else {
System.out.println("用户名或密码错误");
}
}
public boolean login(String username,String password){
if (username != null || password != null){
return false; //username和password都不为空
}
//连接数据库判断是否登录成功
Connection conn = null;
Preparedstatement pstmt = null;
ResultSet rs = null;
try {
//获取数据
// Connection conn = JDBCUTILS.getConnection();
conn = JDBCUTILS.getConnection();
//定义sql
String sql = "select * from user where username = ?and password = ?";
//获取执行sql的对象
// Preparedstatement pstmt = conn.Preparedstatement(sql);
pstmt = conn.Preparedstatement(sql);
//给?赋值
pstmt.setString(1,username); //第1个?
pstmt.setString(2,username); //第2个?
//执行查询,不需要传递参数
rs = pstmt.executeQuery();
//判断结果集有没有数据
/*if (rs.next()) { //如果有下一行,则返回true
return true;
}else {
return false;
}*/
return rs.next();//如果有下一行,则返回true
} catch (SQLException e) {
e.printStackTrace();
}finally { //释放资源,把try里面的conn,stmt声明在外面等于null
JDBCUTILS.close(rs,pstmt,conn);
}
return false;
}
}
版权声明:本文为weixin_47243375原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。