接続mysqlとjdbcを設定する最良の方法/テンプレートは何ですか?

StackOverflow https://stackoverflow.com/questions/819845

  •  03-07-2019
  •  | 
  •  

質問

mysqlのjdbcとの接続を設定する最良の方法は何ですか? そして、簡単なステートメントを実行します。どうやってするか? ありがとう。

役に立ちましたか?

解決

MySQL / JDBCの基本的な定型文は次のようになります。

接続を取得

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://databaseName");

ステートメントを実行

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from tableName");
while (rs.next()) {
    System.out.println(rs.getString(1));
}

ステートメントと接続を閉じる

rs.close();
stmt.close();
conn.close();

ドライバーがインストールされているか、CLASSPATHにインストールされていることを確認する必要があります。

他のヒント

これは21世紀です。JPA(ORM)実装を使用してください。しかし、もしあなたが金属に戻ることを主張するなら(反対票のリスクがある)-

一部のドライバーからJDBC接続を取得する方法は多数あります。固定されたクラス名でリフレクションを使用することは、最も一般的で、おそらく最も脳に損傷を与えます。クラス名を固定する場合、通常のコードの利点を得ることができます(コンパイラはタイプミスをキャッチし、処理する外部の例外はありません、読みやすく、明示的な依存関係、より良いツールのサポートなど)。

また、リソースを安全に片付ける習慣を身に付けます。

だから:

public static void main(String[] args) throws SQLException {
     Driver driver = new com.mysql.jdbc.Driver();
     Connection connection = driver.connect(
         "jdbc:mysql://mydatabase", 
         new java.util.Properties() {{
              put("user", "fred");
         }}
     );
     try {
         PreparedStatement statement = connection.prepareStatement(
             "SELECT insideLeg FROM user WHERE name=?"
         );
         try {
             statement.setString(1, "jim");
             ResultSet results = statement.executeQuery();
             try {
                 if (results.next() {
                     System.out.println("= "+results.getLong(1));
                 } else {
                     System.out.println("Missing.");
                 } 
             } finally {
                 results.close();
             }
         } finally {
             statement.close();
         }
     } finally {
         connection.close();
     }
}

なんてこった!そして、まだトランザクションも使用していません。はい、ORMを使用します。最近はとても尊敬しています。

すべてのステートメントに対してすべてを行う必要はありません。毎回インスタンス化ドライバーを作成する必要はありません。特に、イディオムアラウンドイディオムは便利です。

ケースによって異なります。

スタンドアロンアプリケーションからクエリを実行する必要がある場合は、次のような単一の接続を使用する必要があります。

Class.forName ("yourDriverName");

Connection cn = DriverManager.getConnection ("db url");
Statement st = cn.createStatement ();
ResultSet rs = st.executeQuery ("select * from foo");
while (rs.next()) {
  doSmth ();
} 
rs.close ();
st.close ();
cn.close ();

ただし、実際のアプリケーション(特にWebアプリケーション)を開発している場合は、DataSourceを使用します。データソースの設定方法については、DBおよびWebサーバーのマニュアルを参照してください。 DataSourceを使用すると、接続プールを使用できます。パフォーマンスを向上させる必要があります。

DataSourceの設定は難しいプロセスではありません。

JDBC接続を作成するためのsunのドキュメントは次のとおりです。そこから簡単に get Statementオブジェクトへのアクセスと簡単なSQLの実行。

実稼働レベルのシステムでは、おそらく接続プール

Spring FrameworkのJDBC抽象化フレームワークを使用する-必要なことは、コンテキストXMLファイルを作成し、JDBCテンプレートクラスを使用することだけです。ほんの数行のXML + Javaコードで作業を開始できます。利点は、コンパイルされたJavaから接続の詳細を除外することです。見る: http://www.springbyexample.org/examples/simple-spring- jdbc-template.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top