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のどのフィールドがインデックスに適しているかについての簡単な説明

目次1 データベース インデックスを作成するための一般的なルールは次のとおりです。 2. 数千万件の...

CSS グラデーション効果の概要 (線形グラデーションと放射状グラデーション)

線形グラデーション 背景画像: linear-gradient(方向、開始色、中間色1、中間色2、....

ウェブページ制作と饅頭の関係(体験の共有)

昨日は遅くまで寝ていて、一日中起きていました。私の年齢では、夜更かしして本を書くのはもう無理のようで...

CSS3 天子グリッドリストのスタイルの書き方

多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...

挿入前にレコードが既に存在するかどうかを確認するには、SQL ステートメントを使用します。

目次SQL文を挿入する前にレコードが既に存在するかどうかを確認するSQL挿入時の判断の簡単なコレクシ...

Tomcat と WebLogic で純粋な HTML ファイルを展開するプロセスの分析

1. まず、純粋なHTMLファイルにはindex.htmlというエントリが必要です。 2. Tomc...

NODE.JS を使用して WEBSERVER を作成する手順

目次Node.jsとはNodeJSをインストールするNode を使用して Hello World を...

Eclipseを使用してMySQLデータベースに接続する方法を説明します

序文常にエラーが発生するため、MySQL データベースに接続するプロセスを記録します。接続プロセス1...

Docker ケース分析: MySQL データベース サービスの構築

目次1 設定ディレクトリとデータディレクトリを作成する3 イメージからホストに構成ファイルをコピーす...

MySQL 5.7 のキーワードと予約語の詳細な説明

序文MySQL と Oracle のキーワードはまったく同じではありません。Oracle データベー...

Docker イメージに基づいて Go プロジェクトをデプロイする方法と手順

知識への依存Go クロスコンパイルの基礎Dockerの基礎Dockerfileカスタムイメージの基本...

JavaScript オブジェクトを比較する 4 つの方法

目次序文参考比較手動比較浅い比較徹底比較要約する序文JavaScript でプリミティブ値を比較する...

よくあるNginxの設定ミスの例

目次ルートの場所が見つかりませんオフバイスラッシュ安全でない変数の使用スクリプト名$uri を使用す...

HTML フローティング フレーム (iframe 読み込み HTML) の設定と使用の例

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

CSSアニメーションでポイント獲得効果を実現するアイデアを詳しく解説

最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...