JavaWeb中的数据库连接文件写法(db.properties)

文章目录

下面是MySQL的写法

driver = com.mysql.cj.jdbc.Driver
url =jdbc:mysql://localhost/KLibrary?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
username = 用户名称
password = 密码

案例DEMO

在这里插入图片描述

Java代码

在 JDBC 中 JDBCUtils.java 加载配置文件时,路径使用的是Java项目的相对路径是存在本地的。

新建Package的文件utils(工具包)

新建一个Class类,名为JDBCUtils

package itwcn.com.utils;

import java.io.*;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    
    
	private static String url;
	private static String user;
	private static String password;
	private static String driver;
	
	/**
	 * 文件的读取,只需要读取一次即可,拿到这些值,使用静态代码块 
	 */
	static {
    
    
		//读取资源文件,获取值
		try {
    
    
			//1.Properties集合类
			Properties pro = new Properties();
			
			//获取src路径下的文件方式----------->ClassLoader		类加载器
			ClassLoader classloader = JDBCUtils.class.getClassLoader();
			URL res = classloader.getResource("jdbc.properties");
			String path = res.getPath();
			System.out.println(path);
			
			//2.加载文件
//			pro.load(new FileReader("src/jdbc.properties"));
			pro.load(new FileReader(path));
				
			//3.获取属性,赋值
			url = pro.getProperty("url");
			user = pro.getProperty("user");
			password = pro.getProperty("password");
			driver = pro.getProperty("driver");
			
			//4.注册驱动
			Class.forName(driver);
			
			
		} catch (IOException e) {
    
    
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
    
    
			e.printStackTrace();
		}
		
	}
	

	/**
	 * 获取连接
	 * @return 连接对象
	 * @throws SQLException 
	 */
	public static Connection getConnection() throws SQLException {
    
    
		return DriverManager.getConnection(url,user,password);
	}
	
	
	/**
	 * 释放资源
	 * @param stmt
	 * @param conn
	 */
	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 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();
			}
		} 
	}

}

新建测试类TestUtils

测试JDBC连接是否成功

package itwcn.com.utils;

import java.sql.*;
import java.util.Scanner;

/**
 * 
 * @Title: TestUtils.java
 * @Description: TODO(描述)
 * @author OriginalCoder
 * @date 2020-12-02 01:28:09
 */

/**
 * 练习:
 * 	需求:
 * 		1.通过键盘录入用户名和密码
 * 		2.判断用户是否登录成功
 * 
 */
public class TestUtils {
    
    
    public static void main(String[] args) {
    
    
        //1.键盘输入,接受用户名和密码
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();

        //2.调用方法
        boolean flag = new TestUtils().login2(username,password);

        //3.判断结果,输出不同语句
        if (flag) {
    
    
            System.out.println("登录成功!");
        } else {
    
    
            System.out.println("用户名或密码错误!");
        }
        sc.close();
    }



    /**
     * 登录方法
     *
     */
    public boolean login(String username,String password) {
    
    
        if(username == null || password == null ) {
    
    
            return false;
        }
        //连接数据库,判断是否登录成功
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        //1.获取连接
        try {
    
    
            conn = JDBCUtils.getConnection();
            //2.定义sql
            String sql = "select * from user where username=' "+username+"' and password = '"+ password+"'";
            System.out.println(sql);
            //3.获取执行sql的对象
            stmt = conn.createStatement();
            //4.执行查询
            rs = stmt.executeQuery(sql);

            //5.判断
//            if (rs.next()) {    //如果有下一行,则返回true
//                return true;
//            } else {
    
    
//                return false;
//            }
            return rs.next();   //如果有下一行,则返回true
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            JDBCUtils.close(rs,stmt,conn);
        }

        return false;
    }

    /**
     * 登录方法:使用PreparedStatement实现
     *
     */
    public boolean login2(String username,String password) {
    
    
        if(username == null || password == null ) {
    
    
            return false;
        }
        //连接数据库,判断是否登录成功
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        //1.获取连接
        try {
    
    
            conn = JDBCUtils.getConnection();
            //2.定义sql
            String sql = "select * from user where username= ? and password = ?";
            System.out.println(sql);
            //3.获取执行sql的对象
            pstmt = conn.prepareStatement(sql);
            //给?赋值
            pstmt.setString(1,username);
            pstmt.setString(2,password);
            //4.执行查询,不需要传递参数
            rs = pstmt.executeQuery();

            //5.判断
//            if (rs.next()) {    //如果有下一行,则返回true
//                return true;
//            } else {
    
    
//                return false;
//            }
            return rs.next();   //如果有下一行,则返回true
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            JDBCUtils.close(rs,pstmt,conn);
        }
        return false;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44723773/article/details/111165623