torutkのブログスマートフォン用の表示で見るtorutkのブログソフトウェア・エンジニアのブログ2019-08-25データベースを利用するアプリケーション(データベース接続)はじめに次の記事の続きです。torutk.hatenablog.jpデータベースの作成が終わったら、いよいよアプリケーションからデータベースへ接続してデータの読み書きをします。Connectivity)が提供されています。これは利用するRDBMS製品には依存しておらず、利用するRDBMSを交換可能とする仕様となっています。Interface)を介して組み込みます。SEの標準APIであるServiceLoaderが使われています。APIとSPIを使った実装提供により、アプリケーションからは標準のAPIのみを使ってプログラミングし、実装の切り替えはSPIで行うということが可能になります。ServerのJDBCドライバーを使います。このJDBCドライバーはJARファイルで提供されており、これをクラスパスまたはモジュールパスに指定することで利用できるようになります。12用のそれぞれのJARファイルが別々に用意されています。11用のJARファイルを使います。プログラミングJDBCのAPIでは、データベースへ接続するためのクラスが2種類あります。Interface)を使って、外部のディレクトリ・サーバーに置かれたデータベース接続情報・ドライバーを取り出してデータベースへ接続します。SE環境)ではディレクトリ・サーバー相当を動かすことがないので利用しづらい方法です。DriverManagerデータベース接続情報をURL(文字列等)で指定し、ServiceLoaderで取得したJDBCドライバーを使用してデータベースへ接続します。SE環境ではこちらを使うことが多いです。データベース接続の取得java.sql.DriverManagerクラスのgetConnectionメソッドに接続情報をURL形式で指定して接続(java.sql.Connection)を取得します。Server用のJDBCドライバーがSPIで利用可能となります。プログラム上では明示的な指定は不要です。接続情報をハードコーディングするのは実用的ではないので、外部のファイル、環境変数等に定義してプログラムでその情報を取り込みます。DriverManagerのgetConnectionメソッドには、引数のバリエーションがいくつか用意されています。SQLException外部ファイルに接続情報を記述して読み込むならば、Javaのプロパティファイル形式で記述し読み込み、3番目のシグニチャでプロパティを指定するのがよさそうです。ここで取得したConnectionインスタンスは最後にclose()する必要があります。Spectrumテーブルからidを指定して1件のレコードを取得Spectrumテーブルから、idを指定して、3つの列(名前、周波数の開始値、周波数の終了値)を取り出します。}安全性から、SQLはPreparedStatementで用意します。プレースホルダーでWHERE句のidの値を設定します。プレースホルダーは複数設けられるので設定に際しては何番目かを示す数値と、埋め込む値を指定します。PreparedStatementが完成したら、executeQueryで検索系のSQLを実行します。結果はResultSet型のオブジェクトで返ります。ResultSetの中身を取り出すには、最初にnext()を呼びます。複数レコードが結果として返ってきた場合は、1レコード毎に最初にnext()を呼びます。ResultSetの中身を取り出すには、列名を指定するか、序数を指定します。序数は、SELECT文の場合、SELECTの次に指定する列名(カンマ区切り)の列挙の順番を示します(最初が1)。最初は序数で指定していましたが、SELECTで取り出す列名を変えたりしておりそのたびに序数を付け直すのが手間でした。そこで、列名で指定するようにしました。列名は定数で一か所に定義しておくのがよいでしょう。PreparedStatementは実行後にcloseする必要があります。try-with-resource構文で使用すれば自動でcloseを呼び出します。Adventカレンダーの11日目のエントリーです。前...2009-07-18「Grailsをマスターする:GROM:おかしな名前の真面目な技術」を読みながら動かしてみる(Par...id:torutk:20090714:p1の続きです。月別アーカイブはてなブログをはじめよう!torutkさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。