上次提到過可以通過參數的方式將要連接的數據庫url、用戶名及密碼等通過參數的方式傳給連接函數,下面給出具體測試代碼
package Datacon;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
public class Dataconn {
public String driver="com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://127.0.0.1:3306/test";
private String user ="root";
private String passwd = "root@2017";
//聲明默認連接函數
public Connection defDataConn() throws ClassNotFoundException, SQLException{
Connection connDB = null; //初始化返回null
//加載驅動類
try{
Class.forName(driver);
}catch(ClassNotFoundException e){
e.printStackTrace();
System.out.println("未找到指定類");
}
try{
connDB = (Connection) DriverManager.getConnection(url, user, passwd);
}catch(SQLException
e){
e.printStackTrace();
System.out.println("數據庫連接失敗");
}
return connDB;
}
public Connection setConnDB(){
Connection connDB = null;
try{
Class.forName(driver);
}catch(ClassNotFoundException e){
e.printStackTrace();
System.out.println("未找到指定類");
}
try{
connDB = (Connection) DriverManager.getConnection(url, user, passwd);
}catch(SQLException
e){
e.printStackTrace();
System.out.println("數據庫連接失敗");
}
System.out.println("===================================================");
System.out.println("=====================自定義函數========================");
System.out.println("===================================================");
return connDB;
}
public Dataconn(String driver, String url, String user, String passwd) {
super();
this.driver = driver;
this.url = url;
this.user = user;
this.passwd = passwd;
}
}
除以上方法連接數據庫jdbc還提供通過讀取配置文件的方式連接數據庫,讀取配置文件通過Properties類繼承自Hashtable類并且實現了Map接口,使用鍵值對的形式來保存屬性集。需要注意的是配置文件的存放位置為class path目錄。
properties配置文件
新建配置文件,通過右擊src文件夾選擇new-other,選擇file類型
選擇file類型
輸入文件名及擴展名點擊保存即可。
點擊add添加對應配置文件信息。
添加完成點擊保存即可
輸入內容
通過Properties類實例化,通過x.load()方式導入文件內容。如下:
prop.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties"));
讀取配置文件詳細代碼如下:
package Datacon;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import com.mysql.jdbc.Connection;
public class Dataconn {
public String driver="com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://127.0.0.1:3306/test";
private String user ="root";
private String passwd = "root@2017";
public Dataconn(){
}
//聲明默認連接函數
public Connection defDataConn() throws ClassNotFoundException, SQLException{
Connection connDB = null; //初始化返回null
//加載驅動類
try{
Class.forName(driver);
}catch(ClassNotFoundException e){
e.printStackTrace();
System.out.println("未找到指定類");
}
try{
connDB = (Connection) DriverManager.getConnection(url, user, passwd);
}catch(SQLException
e){
e.printStackTrace();
System.out.println("數據庫連接失敗");
}
return connDB;
}
public Connection setConnDB(){
Connection connDB = null;
try{
Class.forName(driver);
}catch(ClassNotFoundException e){
e.printStackTrace();
System.out.println("未找到指定類");
}
try{
connDB = (Connection) DriverManager.getConnection(url, user, passwd);
}catch(SQLException
e){
e.printStackTrace();
System.out.println("數據庫連接失敗");
}
System.out.println("===================================================");
System.out.println("=====================自定義函數========================");
System.out.println("===================================================");
return connDB;
}
public Dataconn(String driver, String url, String user, String passwd) {
super();
this.driver = driver;
this.url = url;
this.user = user;
this.passwd = passwd;
}
public Connection openFileconn() throws IOException, ClassNotFoundException, SQLException{
Connection dataConn = null;
Properties prop = new Properties();
try{
prop.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties")); //讀入配置文件
this.driver=prop.getProperty("driver"); //獲取配置文件中相應鍵值
this.url = prop.getProperty("url");
this.user = prop.getProperty("user");
this.passwd = prop.getProperty("password");
}catch(IOException e){
e.printStackTrace();
}
System.out.println("config file :"+this.driver+this.url+this.user+this.passwd);
try{
Class.forName(driver);
}catch(ClassNotFoundException e){
e.printStackTrace();
System.out.println("為找到該java驅動");
}
try{
dataConn = (Connection) DriverManager.getConnection(url, user, passwd);
}catch(SQLException e){
e.printStackTrace();
System.out.println("連接失敗");
}
return dataConn;
}
}
方法測試代碼如下:
package Datacon;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction;
import org.junit.Test;
import com.mysql.jdbc.Connection;
public class testRun {
@Test
public void runDef() throws ClassNotFoundException, SQLException{
Dataconn dataconn = new Dataconn();
System.out.print(dataconn);
try{
Connection connDB= dataconn.defDataConn(); //調用數據庫連接函數
Statement stat = connDB.createStatement(); //初始化statement對象連接數據庫
String SQL = "select * from users";
ResultSet res = stat.executeQuery(SQL); //查詢指定數據
//遍歷數據集合
while(res.next()){
String name = res.getNString(2);
System.out.println("查詢內容為:"+name);
}
}catch(SQLException e){
e.printStackTrace();
System.out.println("連接失敗");
}
}
@Test
public void runSet(){
Dataconn dataconn = new Dataconn("com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/test", "root", "root@2017");
System.out.print(dataconn);
try{
Connection connDB= dataconn.setConnDB(); //調用數據庫連接函數
Statement stat = connDB.createStatement(); //初始化statement對象連接數據庫
String SQL = "select * from users";
ResultSet res = stat.executeQuery(SQL); //查詢指定數據
//遍歷數據集合
while(res.next()){
String name = res.getNString(2);
System.out.println("查詢內容為:"+name);
}
connDB.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("連接失敗");
}
}
@Test
public void openFileconn() throws IOException, ClassNotFoundException, SQLException{
Dataconn dataconn = new Dataconn();
System.out.print(dataconn);
try{
Connection connDB= dataconn.openFileconn(); //調用數據庫連接函數
Statement stat = connDB.createStatement(); //初始化statement對象連接數據庫
String SQL = "select * from users";
ResultSet res = stat.executeQuery(SQL); //查詢指定數據
//遍歷數據集合
while(res.next()){
String name = res.getNString(2);
System.out.println("查詢內容為:"+name);
}
}catch(IOException e){
e.printStackTrace();
System.out.println("打開文件失敗");
}
}
}