Skip to content

Latest commit

 

History

History
245 lines (203 loc) · 5.9 KB

README.md

File metadata and controls

245 lines (203 loc) · 5.9 KB

ConnectDatabase

讓使用者選擇連接MySQL或MSSQL

##使用說明

// 將模組new出來
  ConnectDatabase CM = new ConnectDatabase();
  // 輸入IP、port、帳號、密碼、連接的資料庫名稱、連接哪種資料庫
  CM.connect("10.21.10.14", "3306", "tranews06", "tranews06",
      "connecttest", "MySQL");
  // 輸入要執行的語法(搜尋資料)
  CM.setResponseQuery("select * from new");
  try {
    // 取得搜尋的結果
    while (CM.getrs().next()) {
      System.out.println(CM.getrs().getString("TEST"));
    }
  } catch (SQLException e) {
    e.printStackTrace();
  }

##程式碼說明

  • 讓使用者輸入要連接的是MySQL或者是MSSQL

  • 不一樣的資料庫連接要載入不一樣的驅動

  • 讓使用者輸入IP、PORT、資料庫名稱、資料表名稱、帳號、密碼

if (MODE.equals("MySQL")) {
        // 連接MySQL載入MySQL驅動
        DRIVER = new com.mysql.jdbc.Driver();
        // MySQL的URL形式
        String url = "jdbc:mysql://";
        URL = url + IP + ":" + PORT + "/" + dbName
            + "?userUnicode=true";
      } else if (MODE.equals("MSSQL")) {
        // 連接MSSQL載入MSSQL驅動
        DRIVER = new com.microsoft.sqlserver.jdbc.SQLServerDriver();
        // MSSQL的URL形式
        String url = "jdbc:sqlserver://";
        URL = url + IP + ":" + PORT + ";databaseName=" + dbName
            + ";user=" + USERNAME + ";password=" + PASSWORD + ";";
      }
      // 註冊驅動
      DriverManager.registerDriver(DRIVER);
    } catch (SQLException e1) {
      e1.printStackTrace();
}

  • 設定連線
con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
    stmt = con.createStatement();
    System.out.println("連線成功");
    connection = true;

  } catch (SQLException e) {
    // 資料庫連接失敗
    System.out.println("連線失敗");
    e.printStackTrace();
  }
  • 可以讓使用者呼叫的方法但是是沒有回傳值的,如:INSERT、DELETE
public void setNoResponseQuery(String query) {
    try {
      // 設定資料庫與法但是是沒有回傳值的(如inset、delete)
      stmt.execute(query);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
  • 可以讓使用者呼叫的方法但是是有回傳值的,如:SELECT
public void setResponseQuery(String query) {
    try {
      // 設定資料庫與法但是是有回傳值的(如select)
      rs = stmt.executeQuery(query);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
  • 設定與資料庫段開連線
public void disConnect() {
    try {
      DriverManager.deregisterDriver(DRIVER);
      connection = false;
      if (stmt != null) {
        stmt.close();
        stmt = null;
      }
      if (con != null) {
        con.close();
        con = null;
      }
      if (rs != null) {
        rs.close();
        rs = null;
      }
      System.out.println("斷開連線");
    } catch (SQLException e) {
      e.printStackTrace();
    }

##完整程式碼

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnectDatabase {
  private String URL;
  private Driver DRIVER;
  public static boolean connection = false;
  private Connection con = null;
  private Statement stmt = null;
  private ResultSet rs = null;

  // 執行資料庫連接的FUNCTION需傳入IP(網址),PORT(埠號),USERNAME(使用者名稱),PASSWORD(密碼),DBNAME(資料庫名稱),NODE(連接哪種資料庫)
  public void connect(String IP, String PORT, String USERNAME,
      String PASSWORD, String dbName, String MODE) {
    try {
      // 判斷連接不同的資料庫使用不同模式
      if (MODE.equals("MySQL")) {
        // 連接MySQL載入MySQL驅動
        DRIVER = new com.mysql.jdbc.Driver();
        // MySQL的URL形式
        String url = "jdbc:mysql://";
        URL = url + IP + ":" + PORT + "/" + dbName
            + "?userUnicode=true";
      } else if (MODE.equals("MSSQL")) {
        // 連接MSSQL載入MSSQL驅動
        DRIVER = new com.microsoft.sqlserver.jdbc.SQLServerDriver();
        // MSSQL的URL形式
        String url = "jdbc:sqlserver://";
        URL = url + IP + ":" + PORT + ";databaseName=" + dbName
            + ";user=" + USERNAME + ";password=" + PASSWORD + ";";
      }
      // 註冊驅動
      DriverManager.registerDriver(DRIVER);
    } catch (SQLException e1) {
      e1.printStackTrace();
    }
    try {
      // 設定連接資料庫(傳入URL,使用者名稱跟密碼)
      con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
      stmt = con.createStatement();
      System.out.println("連線成功");
      connection = true;

    } catch (SQLException e) {
      // 資料庫連接失敗
      System.out.println("連線失敗");
      e.printStackTrace();
    }
  }

  public void setNoResponseQuery(String query) {
    try {
      // 設定資料庫與法但是是沒有回傳值的(如inset、delete)
      stmt.execute(query);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  public void setResponseQuery(String query) {
    try {
      // 設定資料庫與法但是是有回傳值的(如select)
      rs = stmt.executeQuery(query);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  // 取得回傳值
  public ResultSet getrs() {
    return rs;
  }

  // 取得連線狀態
  public Boolean getConnection() {
    return connection;
  }

  // 斷開資料庫連線
  public void disConnect() {
    try {
      DriverManager.deregisterDriver(DRIVER);
      connection = false;
      if (stmt != null) {
        stmt.close();
        stmt = null;
      }
      if (con != null) {
        con.close();
        con = null;
      }
      if (rs != null) {
        rs.close();
        rs = null;
      }
      System.out.println("斷開連線");
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

}