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

推薦する

HTMLはBaidu百科事典のナビゲーションドロップダウンメニュー機能を模倣します

HTML は、Baidu 百科事典のナビゲーション ドロップダウン メニュー機能を模倣します。具体的...

HTML で中国語を UTF-8 に変換する方法

HTMLでは、中国語のフレーズ「學好好學」は「學好好學」と表現できます。プロジェクトでは、SMSアラ...

Vue で $attrs と $listeners を使用するチュートリアル

目次導入例要約する導入$属性すべての親コンポーネントのプロパティを継承します (props を通じて...

CSS グリッドレイアウトを使用してレスポンシブな縦棒グラフを作成する方法

私はしばらくの間チャートをいじっていましたが、好奇心から、CSS を使用してチャートを作成するより良...

MySQL インポート csv エラーの 4 つの解決策

これは今日私が踏んだ4つの落とし穴を記念したものです...落とし穴1:地元のせいエラー:エラー 39...

JavaScript でオブジェクトのプロパティを削除する方法

1. 削除delete は、オブジェクトのプロパティを残さずに削除する唯一の方法ですが、その「代替」...

HTML+CSS で div タグの右上隅に削除アイコンを追加するサンプルコード

1. 要件の説明Divタグの右上隅に削除アイコンを表示します2. 実装html、CSS 3. 参照コ...

よく理解しましたかタグ 定義方法 使用方法

序文:今日、「<!DOCTYPE> タグを注意深く理解しましたか?」と尋ねられました。私...

カレンダーウィジェットのネイティブJS実装

この記事の例では、カレンダーウィジェットを実装するためのjsの具体的なコードを参考までに共有していま...

Nginx ローカル ディレクトリ マッピング実装コード例

他のデバイスの画像をローカルディレクトリにマウントするなど、サーバー上の静的リソースにアクセスする必...

Win10 MySQLでCSVをエクスポートする2つの方法

Win10 で csv をエクスポートする方法は 2 つあります。1 つ目はツールを使用することです...

mysql5.7.33 で誤って ibdata ファイルを削除した後にデータを回復する方法

目次1. シナリオの説明: 2. 事例のデモンストレーション: 2.1. MySQLの障害発生前にデ...

JavaScript 変数の昇格についての簡単な説明

目次序文1. どのような変数が促進されますか? 2. 可変プロモーションがあるのはなぜですか? (1...

モバイルデバイスでのフリーズ問題に対する CSS3 ソリューション (アニメーション パフォーマンスの最適化)

1. CSS、jQuery、Canvasを使用してアニメーションを作成する1. キャンバス利点: ...

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

MySQLインストーラをダウンロードする公式ダウンロードアドレス: http://dev.mysq...