現在在做一個項目,其中編寫了數據庫連接及操作的類。
1、ConnDB類。
package com.wgh.tools;
import java.io.InputStream; //導入java.io.InputStream類
import java.sql.*; //導入java.sql包中的所有類
import java.util.Properties; //導入java.util.Properties類
public class ConnDB {
public Connection conn = null; // 聲明Connection對象的實例
public Statement stmt = null; // 聲明Statement對象的實例
public ResultSet rs = null; // 聲明ResultSet對象的實例
//private static String propFileName = "connDB.properties"; // 指定資源文件保存的位置
//private static Properties prop = new Properties(); // 創建並實例化Properties對象的實例
private static String dbClassName = "com.mysql.jdbc.Driver"; // 定義保存數據庫驅動的變量
private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/db_9griddiary?user=root&password=&useUnicode=true&characterEncoding=utf8";
// public ConnDB() { // 構造方法
// try { // 捕捉異常
// // 將Properties文件讀取到InputStream對象中
// InputStream in = getClass().getResourceAsStream(propFileName);
// prop.load(in); // 通過輸入流對象加載Properties文件
// dbClassName = prop.getProperty("DB_CLASS_NAME"); // 獲取數據庫驅動
// // 獲取連接的URL
// dbUrl = prop.getProperty("DB_URL", dbUrl);
// } catch (Exception e) {
// e.printStackTrace(); // 輸出異常信息
// }
// }
/**
* 功能:獲取連接的語句
*
* @return
*/
public static Connection getConnection() {
Connection conn = null;
try { // 連接數據庫時可能發生異常因此需要捕捉該異常
Class.forName(dbClassName).newInstance(); // 裝載數據庫驅動
conn = DriverManager.getConnection(dbUrl); // 建立與數據庫URL中定義的數據庫的連接
} catch (Exception ee) {
ee.printStackTrace(); // 輸出異常信息
}
if (conn == null) {
System.err
.println("警告: DbConnectionManager.getConnection() 獲得數據庫鏈接失敗.\r\n\r\n鏈接類型:"
+ dbClassName + "\r\n鏈接位置:" + dbUrl); // 在控制台上輸出提示信息
}
return conn; // 返回數據庫連接對象
}
/*
* 功能:執行查詢語句
*/
public ResultSet executeQuery(String sql) {
try { // 捕捉異常
conn = getConnection(); // 調用getConnection()方法構造Connection對象的一個實例conn
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println(ex.getMessage()); // 輸出異常信息
}
return rs; // 返回結果集對象
}
/*
* 功能:執行更新操作
*/
public int executeUpdate(String sql) {
int result = 0; // 定義保存返回值的變量
try { // 捕捉異常
conn = getConnection(); // 調用getConnection()方法構造Connection對象的一個實例conn
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql); // 執行更新操作
} catch (SQLException ex) {
result = 0; // 將保存返回值的變量賦值為0
}
return result; // 返回保存返回值的變量
}
/*
* 功能:關閉數據庫的連接
*/
public void close() {
try { // 捕捉異常
if (rs != null) { // 當ResultSet對象的實例rs不為空時
rs.close(); // 關閉ResultSet對象
}
if (stmt != null) { // 當Statement對象的實例stmt不為空時
stmt.close(); // 關閉Statement對象
}
if (conn != null) { // 當Connection對象的實例conn不為空時
conn.close(); // 關閉Connection對象
}
} catch (Exception e) {
e.printStackTrace(System.err); // 輸出異常信息
}
}
}
第一次連接成功。
第二次為什麼無論把這個類中的用戶名和密碼修改成什麼都能連接上MySql了?
請問這個類中的用戶名和密碼有用嗎?
那在哪兒修改用戶名和密碼後就連接不上Mysql了?
如果遇到這種情況,可以考慮clean project;然後在試試,如果還不行再看代碼;需要用到數據庫帳號密碼只有在鏈接的時候用到。