MySQLへのJava接続の基礎となるカプセル化の詳細な説明

MySQLへのJava接続の基礎となるカプセル化の詳細な説明

この記事では、Java接続MySQLの基礎となるカプセル化コードを参考までに紹介します。具体的な内容は次のとおりです。

データベースへの接続

パッケージ com.dao.db;

java.sql.Connection をインポートします。
java.sql.SQLException をインポートします。

/**
 * データベース接続層 MYSQL
 * @author 管理者
 *
 */
パブリッククラスDBConnection {
 
 
 /**
  * データベースに接続 * @return
  */
 パブリック静的接続 getDBConnection()
 {
  // 1. ドライバーを登録する try {
   クラス.forName("com.mysql.jdbc.Driver");
  } キャッチ (ClassNotFoundException e) {
   // TODO 自動生成されたキャッチブロック
   e.printStackTrace();
  }
  // データベース接続を取得する try {
   接続 conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/mysql?useUnicode=true&characterEncoding=utf-8", "root", "root");
   conn を返します。
  } キャッチ (SQLException e1) {
   e1.printStackTrace();
  }
  null を返します。
 }
 
}

データ層のカプセル化

パッケージ com.dao.db;

java.sql.Connection をインポートします。
java.sql.PreparedStatement をインポートします。
java.sql.ResultSet をインポートします。
java.sql.ResultSetMetaData をインポートします。
java.sql.SQLException をインポートします。
java.sql.Types をインポートします。
java.util.ArrayList をインポートします。
java.util.HashMap をインポートします。

/**
 * MYSQLデータベースの基礎となるカプセル化 * @author 管理者
 *
 */
パブリッククラスDBManager{
 
 プライベート PreparedStatement pstmt;
 プライベート接続 conn;
 プライベートResultSet rs;
 

 /**
  * データベースを開く */
 パブリックDBManager() {
  DBConnection のインスタンスを作成します。
 }
 
 /**
  * 変更および追加操作を実行する * @param coulmn
  * @パラメータ型
  * @param sql
  * @戻る
  * @throwsSQLException 例外をスローします
  */
 パブリック ブール型 updateOrAdd(String[] 列、int[] 型、String sql) は SQLException をスローします
 {
  if(!setPstmtParam(列、タイプ、SQL))
   false を返します。
  ブールフラグ = pstmt.executeUpdate()>0?true:false;
  DBを閉じる();
  フラグを返します。
 }
 /**
  * クエリ結果セットを取得 * @param coulmn
  * @パラメータ型
  * @param sql
  * @throwsSQLException 例外をスローします
  */
 パブリック DataTable getResultData(String[] 列、int[] 型、String sql) は SQLException をスローします
 {
  データテーブル dt = 新しいデータテーブル();
  
  ArrayList<HashMap<String, String>>リスト = new ArrayList<HashMap<String, String>>();
  
  if(!setPstmtParam(列、タイプ、SQL))
   null を返します。
  rs = pstmt.executeQuery();
  ResultSetMetaData rsmd = rs.getMetaData(); //データベースの列名を取得します int numberOfColumns = rsmd.getColumnCount();
  while(rs.next())
  {
   HashMap<String, String> rsTree = 新しい HashMap<String, String>(); 
   for(int r=1;r<列数+1;r++)
    {
    rsTree.put(rsmd.getColumnName(r),rs.getObject(r).toString());
    }
   リストに追加します。
  }
  DBを閉じる();
  dt.setDataTable(リスト);
  dt を返します。
 }
 
 /**
  * パラメータ設定 * @param 列
  * @パラメータ型
  * @throwsSQLException 例外をスローします 
  * @throws 数値フォーマット例外 
  */
 プライベートブール値setPstmtParam(String[] 列、int[] 型、String sql) は NumberFormatException、SQLException をスローします
 {
  if(sql== null) は false を返します。
  pstmt = conn.prepareStatement(sql);
  if(列 != null && type != null && 列の長さ !=0 && type の長さ !=0 )
  {  
   (int i = 0; i<type.length; i++) の場合 {
    スイッチ(type[i]) {
    ケース Types.INTEGER:
     pstmt.setInt(i+1, Integer.parseInt(coulmn[i]));
     壊す;
    ケースタイプ.BOOLEAN:
     pstmt.setBoolean(i+1, Boolean.parseBoolean(coulmn[i]));
     壊す;
    ケースタイプ.CHAR:
     pstmt.setString(i+1, 列[i]);
     壊す;
    ケース Types.DOUBLE:
     pstmt.setDouble(i+1, Double.parseDouble(coulmn[i]));
     壊す;
    ケース Types.FLOAT:
     pstmt.setFloat(i+1, Float.parseFloat(coulmn[i]));
     壊す;
    デフォルト:
     壊す;
    }
   }
  }
  true を返します。
 }
 
 /**
  * データベースを閉じる * @throws SQLException
  */
 private void closeDB() は SQLException をスローします
 {
  if(rs != null)
  {
   rs.close();
  }
  if(pstmt != null)
  {
   pstmt.close();
  }
  if(conn != null)
  {
   接続を閉じる();
  }
  
 }
}

データセットのパッケージ化

パッケージ com.dao.db;

java.util.ArrayList をインポートします。
java.util.HashMap をインポートします。
java.util.Iterator をインポートします。
java.util.Map をインポートします。
java.util.Set をインポートします。

/**
 * データセットのカプセル化 * @author 管理者
 *
 */
パブリッククラスDataTable {
 
 public String[] column; //列フィールド public String[][] row; //行の値 public int rowCount = 0; //行数 public int colCoun = 0; //列数 public DataTable() {
  素晴らしい();
 }
 
 パブリック DataTable(String[] 列、String[][] 行、int 行数、int 列数) {
  素晴らしい();
  this.column = 列;
  this.row = 行;
  行数 = 行数;
  this.colCoun = colCoun;
 }


 パブリック void setDataTable(ArrayList<HashMap<String, String>> リスト) {
  行数 = リストのサイズ();
  colCoun = list.get(0).size();
  列 = 新しい文字列[colCoun];
  row = 新しい文字列[行数][列数];
  (int i = 0; i < rowCount; i++) の場合 {
   Set<Map.Entry<String, String>> set = list.get(i).entrySet();
   整数j = 0;
   (Iterator<Map.Entry<String, String>> it = set.iterator(); it
     .hasNext();) {
    Map.Entry<String, String> エントリ = (Map.Entry<String, String>) it
      。次();
    行[i][j] = エントリ.getValue();
    i == 行数 - 1 の場合
     列[j] = エントリ.getKey();
    }
    j++;
   }
  }
 }

 パブリックString[] getColumn() {
  戻り列;
 }

 パブリックvoid setColumn(String[]列) {
  this.column = 列;
 }

 パブリック文字列[][] getRow() {
  行を返します。
 }

 パブリック void setRow(String[][] row) {
  this.row = 行;
 }

 パブリック int getRowCount() {
  rowCount を返します。
 }

 パブリック void setRowCount(int rowCount) {
  行数 = 行数;
 }

 パブリック int getColCoun() {
  colCoun を返します。
 }

 パブリック void setColCoun(int colCoun) {
  this.colCoun = colCoun;
 }
 
 

}

テストデモ

パッケージ com.bussiness.test;

java.sql.SQLException をインポートします。
java.sql.Types をインポートします。

com.dao.db.DBManager をインポートします。
com.dao.db.DataTable をインポートします。

パブリッククラスTestBusiness{
 
 静的文字列 searchSql = "スコアから * を選択";
 static String insertSql = "score(name, age, score)values(?,?,?) に挿入";
 static String deleteSql = "id = ?" のスコアから削除します。
 static String updateSql = "スコアセット名を更新?、IDは?";
 
 パブリック静的voidメイン(String[] args) {
  intsertData();
  検索データ();
 }
 
 プライベート静的 void intsertData()
 { 
  DBManager dm = 新しい DBManager();
  String[]列 = new String[]{"wyf2", "23", "89.5"};
  int[] type = new int[]{Types.CHAR、Types.INTEGER、Types.DOUBLE};
  
  試す {
   ブール値フラグ = dm.updateOrAdd(列、タイプ、挿入SQL);
   if(フラグ)
    System.out.println("挿入に成功しました");
  } キャッチ (SQLException e) {
   e.printStackTrace();
  }
 }
 プライベート静的void searchData()
 { 
  DBManager dm = 新しい DBManager();
  String[]列 = null;
  int[] 型 = null;
  
  試す {
   データテーブル dt = dm.getResultData(列、タイプ、検索SQL);
   if(dt != null && dt.getRowCount() > 0){   
    for(int i = 0; i<dt.getRowCount(); i++)
    {
     for(int j = 0; j<dt.getColCoun(); j++)
     System.out.printf(dt.getRow()[i][j]+"\t");
     システム出力のprintln();
    }
   }
   それ以外
    System.out.println("クエリに失敗しました");
  } キャッチ (SQLException e) {
   e.printStackTrace();
  }
 }
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Java が MySQL データベースに接続するコード例プログラム
  • Java を Mysql バージョン 8.0.18 に接続する方法の詳細な説明
  • JavaはMySQLデータベースに接続して単一挿入とバッチ挿入を実装します
  • JavaがMySQL 8.0に接続できない問題の解決策
  • MySQL ベースの学生管理システムを Java で実装する
  • 学生情報管理システムのソースコードを実装するための Java+MySQL
  • Java Spring で動的に Mysql ストアド プロシージャを生成する詳細な説明

<<:  Linux システムのユーザー管理コマンドの概要

>>:  auto.jsを使用して毎日の自動チェックイン機能を実現する

推薦する

XHTML 3つの文書型宣言

XHTML は 3 つのドキュメント タイプ宣言を定義します。最もよく使用されるのは XHTML T...

航空機戦争ゲームを実装するためのネイティブJS

この記事の例では、参考のために航空機戦争ゲームを実装するためのJSの具体的なコードを共有しています。...

MySQL での varchar 型の日付の比較、並べ替え、その他の操作の実装

MySQL を使用する場合、日付は通常、datetime や timestamp などの形式で保存さ...

Vue.js フロントエンドプロジェクト向け多言語ソリューションのアイデアと実践

目次1. 通常どのようなコンテンツを処理する必要があるか2. 基本的な考え方3. 具体的な実践の詳細...

Docker コンテナのタイムゾーン エラーの問題

目次背景質問問題分析と解決策新たな問題問題分析と解決策背景node-schedule スケジュール ...

JavaScript における BOM と DOM の詳細な説明

目次BOM (ブラウザ オブジェクト モデル) 1. ウィンドウブラウザのウィンドウサイズを取得する...

Vueはタブを切り替えてデータの状態を維持する3つの方法を実装します

Vue でタブ切り替えを実装する 3 つの方法1. v-showはコンテンツの切り替えを制御します1...

Docker インストール Nginx チュートリアル 実装図

Nginx をインストールして試してみましょう。画像はクラスであり、コンテナはオブジェクトであること...

VMWare仮想マシンにCentOS7システムをインストールする詳細な手順

インストール前の作業: VMware Workstation がインストールされていることを確認し、...

CSS3実践手法のまとめ(推奨)

1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....

Docker+Jenkinsによる自動デプロイの実現方法

Code Cloud を使用して Git コード ストレージ ウェアハウスを構築するhttps://...

Vue の高度な構築プロパティの詳細な説明

目次1. ディレクティブカスタムディレクティブ2. ミックスイン3. 継承を拡張する4. 提供して注...

HTMLでvueとel​​ement-uiを直接参照する方法

コードは次のようになります。 <!DOCTYPE html> <html> ...

CSS を使用して同じ親タグの左側と右側に 2 つのボタンを配置する方法

この記事では、主に同じ親タグの左側と右側にある 2 つのボタンの CSS レイアウト方法を紹介し、皆...

MySQL パフォーマンスの包括的な最適化方法リファレンス、CPU、ファイルシステムの選択から mysql.cnf パラメータの最適化まで

この記事では、一般的な MySQL 最適化方法をいくつかまとめて簡単に紹介します。これは、フルタイム...