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を使用して毎日の自動チェックイン機能を実現する

推薦する

MySQL での GROUP_CONCAT の使用例の分析

この記事では、例を使用して、MySQL で GROUP_CONCAT を使用する方法について説明しま...

VMware14 に CentOS 7 をインストールするグラフィック チュートリアル

CentOS の紹介CentOS は、Red Hat Linux が提供する無料で利用できるソースコ...

マークアップ言語 - HTML を学んだ後に何を学ぶべきか?

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

JS の FileReader を介して .txt ファイルの内容を取得する方法

目次JSはFileReaderを通じて.txtファイルの内容を取得します。 .txtファイルの読み取...

MySQL ルートパスワードエラー番号 1045 の解決方法

MySQLサービスを停止するWindowsでは、マイコンピュータを右クリック--管理--サービスと...

Windows 10 Home Edition に Docker をインストールする方法

最近、プロジェクトをアップグレードするために Docker を使用しました。これまで使用したことがな...

VMware Workstationはデバイス/資格情報ガードと互換性がありません

仮想マシンをインストールするときに、「VMware ワークステーションはデバイス/資格情報ガードと互...

JavaScript スネーク実装コード

この記事の例では、参考までに貪欲なスネークを実装するためのJavaScriptの具体的なコードを共有...

Docker を使ってゼロから SOLO 個人ブログを構築する方法

目次1. 環境整備2. Dockerをインストールする3. MySQLマスタースレーブデータベースを...

vue cli3は環境ごとにパッケージ化の手順を実装します

cli3 でビルドされた vue プロジェクトは、ゼロ構成ファイルとして知られています。パッケージ化...

MySQL 5.6.37 (zip) ダウンロード インストール 構成 グラフィック チュートリアル

この記事では、MySQL 5.6.37のダウンロード、インストール、設定のチュートリアルを参考までに...

きれいなJavaScriptコードの書き方を教える記事

目次1. 変数意味のある名前を使う不必要なコンテキストを追加しないようにするハードコードされた値を避...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

JavaScriptエラーキャプチャの詳細な説明

目次1. 基本的な使い方とロジック2. 特徴3. エラーオブジェクト4. キャッチアンドスロー戦略の...

MySQL データベースの手動およびスケジュールされたバックアップ手順

目次手動バックアップタイマーバックアップ手動バックアップ1) cmd コンソール: mysqldum...