1. 程式人生 > 其它 >JavaWeb中的資料庫連線檔案寫法(db.properties)

JavaWeb中的資料庫連線檔案寫法(db.properties)

技術標籤:Java/JavaWeb資料庫mysqljdbcjava

文章目錄

下面是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;
    }
}