JDBC の 6 つのステップ:1. ドライバーを登録する 2. データベース接続を取得する 3. データベースの操作オブジェクトを取得する 4. SQL文を実行する 5. クエリ結果セットを処理する(実行されたステートメントに選択ステートメントがない場合、この手順を記述する必要はありません) 6. リソースを閉じる ステップ1: ドライバーを登録する//例外を処理する必要があります //コードはバージョンによって異なる場合があります。古いバージョンは DriverManager.register(new com.mysql.jdbc.Driver()); です。 // または Class.forName("com.mysql.jdbc.Driver"); //新しいバージョンは DriverManager.register(new com.mysql.cj.jdbc.Driver()); です。 // または Class.forName("com.mysql.cj.jdbc.Driver"); ステップ2: データベース接続を取得する// try..catch を実行してリソースを閉じる必要があるため、try の外側に記述して null 値を割り当てます。Connection conn = null; ... // 戻り値は Connection です。古いバージョンと新しいバージョンの URL の書き方も異なります。 // jdbc:mysql://localhost:3306/t_use は以前と同じです。t_use を独自のデータベース名に変更してください。 // 古いバージョン conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_use","user name","password"); //新しいバージョンconn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_use?serverTimezone=GMT%2B8","ユーザー名","パスワード"); ステップ3: データベース操作オブジェクトを取得する//これは前と同じ接続です。ステートメント st = null; ... //このようにしてオブジェクトが作成されます st = conn.createStatement(); ステップ4: SQL文を実行する//SQL ステートメントを引用符で囲んで記述します。String sql = " "; // 作成したオブジェクトを使用して、この SQL ステートメントにアクセスします // ここで他に言うことがあります。選択ステートメントでない場合は、次のステートメントを使用します。戻り値は int なので、手順 5 は必要ありません。 st.executeUpdate(sql); //SQL ステートメントが select の場合は、次のステートメントを使用する必要があり、この値を受け取るための ResultSet オブジェクトも定義する必要があります //次に、手順 5 に進みます ResultSet rs = null; //Connection rs = st.executeQuery(sql); と同じです ステップ5: クエリ結果セットを処理する//これはselect文によってのみ処理され、getStringだけでなくgetIntなども実行できます。while (rs.next()) { String str = rs.getString("出力するフィールドの名前"); } ステップ6: リソースを閉じる//最初の5つのステップはすべてtryで実行され、6番目のステップはfinallyで実行されます //接続を閉じます if (rs != null) { 試す { rs.close(); } catch (SQLException スロー可能) { throwables.printStackTrace(); } } st != null の場合 { 試す { st.close(); } catch (SQLException スロー可能) { throwables.printStackTrace(); } } (conn != null) の場合 { 試す { 接続を閉じる(); } catch (SQLException スロー可能) { throwables.printStackTrace(); } } 接続を閉じる順序もあります。最初に ResultSet を閉じ、次に Statement オブジェクトを閉じ、最後に Connection オブジェクトを閉じます。 完全なコードパッケージ jdbc.com; com.mysql.cj.protocol.Resultset をインポートします。 java.sql.* をインポートします。 パブリッククラスTest02 { パブリック静的voidメイン(String[] args) { 接続 conn = null; ステートメント st = null; 結果セット rt = null; 試す { //接続を登録する(1行で記述可能) //com.mysql.cj.jdbc.Driver ドライバー = new com.mysql.cj.jdbc.Driver(); DriverManager.registerDriver(新しいcom.mysql.cj.jdbc.Driver()); //データベース接続を取得します。conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/liu2?serverTimezone=GMT%2B8","ユーザー名","パスワード"); //データベース操作オブジェクトを取得します。st = conn.createStatement(); //SQL ステートメントを実行します。String sql = "select ename,sal from emp order by sal desc"; rt = st.executeQuery(sql); //クエリステートメントの処理 while (rt.next()) { 文字列 ename = rt.getString("ename"); 文字列 sal = rt.getString("sal"); System.out.println(ename + "," + sal); } } catch (SQLException スロー可能) { throwables.printStackTrace(); }ついに { //接続を閉じる if (rt != null) { 試す { rt.close(); } catch (SQLException スロー可能) { throwables.printStackTrace(); } } st != null の場合 { 試す { st.close(); } catch (SQLException スロー可能) { throwables.printStackTrace(); } } (conn != null) の場合 { 試す { 接続を閉じる(); } catch (SQLException スロー可能) { throwables.printStackTrace(); } } } } } 最後に、値を渡すと、SQL インジェクションが発生する可能性があります。解決策は、Statement を PreparedStatement に変更して、SQL インジェクションの問題を回避することです。ただし、3 番目と 4 番目の手順のコードは若干異なるため、詳細は説明しません。 。 要約するこれでJDBC接続(MySQLとの接続)に関する記事は終了です。JDBCとMySQL接続に関するより詳しい内容は、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 回転するフリップカードアニメーションの効果を実現するCSS
序文プロジェクトを .net core に移行した後、 System.Drawing.Commonコ...
序文プロジェクトでは中間層としてNodeを使用し、Nodeのデプロイにはdockerを使用します。こ...
列ベースの Web デザインのインスピレーションをお探しの場合は、32 個のクラシックな列/グリッド...
1 問題の説明: 1.1 Windows 10 に VMware を初めてインストールする場合、また...
CSS でテキストアイコンを実装する方法 /*アイコンスタイル*/ .nav-icon-norma...
序文エージェントの役割は何ですか? - 複数のドメイン名が同じサーバーに解決される- 1つのサーバー...
目次1. インデックスの基本1. インデックスの種類1.1 Bツリーインデックス1.2 ハッシュイン...
実行中のコンテナIDを見つける ドッカーps上記のコンテナの物理的な場所を見つける /var/lib...
目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...
背景tomcat によって生成された catalina.out ログ ファイルが分割されていない場合...
入力ボックスの値を取得する複数の方法最初の方法は、制御されていないコンポーネントの取得です2番目の方...
目次序文VMware クローン仮想マシン (準備、3 台の仮想マシンのクローン、1 台のマスター、2...
まだ rem フレキシブルレイアウトを使用していますか?圧縮された js コードの大きなセクションを...
起動していたDockerコンテナはメモリを使い果たした状態になっており、再起動せずにコンテナのメモリ...
この記事ではクラスタの展開に関連する内容は紹介しませんバージョン制約Docker エンジン >...