JavaWeb中的資料庫連線檔案寫法(db.properties)
阿新 • • 發佈:2020-12-16
技術標籤: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;
}
}