菜鳥学JDBC(一)

7088 ワード

まず、jdbcの基礎知識の概要を引用します(http://blog.csdn.net/cxwen78/article/details/6863696)
注意:このシリーズのブログで使用されているデータベースはmysql(バージョン5.1.23)です.
 
JDBCはSun社が作成したJava言語でデータベースに接続できる技術です.
一、JDBC基礎知識
JDBC(Java Data Base Connectivity,javaデータベース接続)は、SQL文を実行するJava APIで、Java言語で記述されたクラスとインタフェースのセットからなる複数のリレーショナル・データベースへの統合アクセスを提供します.JDBCはデータベース開発者に標準的なAPIを提供し、これによってより高度なツールとインタフェースを構築することができ、データベース開発者が純粋なJava APIでデータベースアプリケーションを記述することができ、プラットフォーム間で実行することができ、データベースベンダーの制限を受けない.
1、プラットフォームにまたがって運行する:これはJava言語の「一回のコンパイル、あちこちで運行する」の特徴を受け継いだ.
2、データベースベンダーの制限を受けない:JDBCには2つのインタフェースが巧みに設けられており、1つはアプリケーション層向けであり、その役割は開発者がSQLを通じてデータベースと処理結果を呼び出すことであり、データベースのプロバイダを考慮する必要がない.もう1つはドライバ層で、特定のドライバとのインタラクションを処理し、JDBCドライバはJDBC APIを利用してJavaプログラムとデータソースとの橋渡しを作成することができます.アプリケーションは1回作成するだけで、さまざまなドライバに移動して実行できます.Sunは、MySQL、Oracleなどのデータベース・ベンダーが提供するドライバ・マネージャを提供し、ドライバ・マネージャの要件を満たすと認識され、正常に動作します.したがって、JDBCはデータベースベンダーの制限を受けません.
 
JDBC APIは、Javaアプリケーションと様々なリレーショナル・データベースを接続する絆として機能し、便利さをもたらすとともにマイナスの影響もあり、以下はJDBCのメリットとデメリットである.メリットは次のとおりです.
・操作が便利:JDBCは開発者が複雑なドライブ呼び出しコマンドと関数を使用する必要がない.
・移植性が強い:JDBCは異なる関係データベースをサポートするので、同じアプリケーションに複数のデータベースへのアクセスをサポートさせることができ、対応するドライバをロードすればよい.
・汎用性が良い:JDBC-ODBCブリッジドライバはJDBC関数をODBCに変える;
・オブジェクト向け:共通のJDBCデータベース接続を一つのクラスにカプセル化し、使用時に直接呼び出せばよい.
欠点は次のとおりです.
・データ記録へのアクセス速度はある程度の影響を受ける.
・データソースの変更が困難:JDBCは多種類のデータベースをサポートすることができ、各種類のデータベース間の操作は必ず異なって、これはデータソースの変更に大きな面倒をもたらした
 
二、JDBC接続データベースの流れとその原理
本文はどのようにデータベースに接続するかに重点を置いて、データベースに接続する前の準備についてはもう述べないで、具体的にはgoogleの.
準備:
1.jdkインストール、環境構成、eclepseインストール;
2.mysqlインストール、環境構成;
3.eclipseでjavaプロジェクトを新規作成し、mysqlドライバ(mysql-connector-java-5.1.23-bin.jar)をインポートし、右クリック項目名->構築パス->構築パスの構成->外部jarの追加、選択します.
4.データベース・サービスを開始する(コマンド・ラインの下で、コマンドを入力:net start mysql(データベース名))
菜鸟学JDBC(一)_第1张图片
 
5.データベースにテーブルを新規作成する.
次に、mysqlデータベースへの接続方法を簡単な例で説明します(ここではすべての例外を放出し、次の異常処理の問題を検討します).
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @author Rowand jj
 *
 */
public class BasicConnectionDemo
{

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception
	{
		String url = "jdbc:mysql://localhost/db_test";
		String user = "root";
		String password = "sjjhong";
		String sql = "select * from tb_4";
		easyConnect(url, user, password, sql);
	}
	public static void easyConnect(String url,String user,String password,String sql)
			throws ClassNotFoundException, SQLException
	{
		
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection(url,user,password);
		Statement stat = conn.createStatement();
		ResultSet rs = stat.executeQuery(sql);
		while(rs.next())
		{
			System.out.print(rs.getObject("id") + " ");
			System.out.print(rs.getObject("name") + " ");
			System.out.print(rs.getObject("salary") + "
"); } rs.close(); stat.close(); conn.close(); } }

実行結果:
菜鸟学JDBC(一)_第2张图片      菜鸟学JDBC(一)_第3张图片
接続手順:
1.ドライバのマウント:
Class.forName(「データベースドライバの指定」)
ここで、comを見てもいいです.mysql.jdbc.Driverのソース:
publicclass Driver extends NonRegisteringDriver implements java.sql.Driver {

   // ~ Static fields/initializers

   // ---------------------------------------------

 

   //

   // Register ourselves with the DriverManager

   //

   static {

      try {

         java.sql.DriverManager.registerDriver(new Driver());

      } catch (SQLException E) {

         thrownew RuntimeException("Can't register driver!");

      }

   }

 

   // ~ Constructors

   // -----------------------------------------------------------

 

   /**

    * Construct a new driver and register it with DriverManager

    * 

    * @throws SQLException

    *             if a database error occurs.

    */

   public Driver() throws SQLException {

      // Required for Class.forName().newInstance()

   }

}

 
ソースコードから分かるように、このクラスは仮想マシンにマウントされた後、静的コードブロックが実行され、ドライバが登録する.
MySQL Connector/J Developer's Guideのドキュメントは次のように記述されています.
Specify to the DriverManagerwhich JDBC drivers to try to make Connections with. The easiest way
to do this is to use Class.forName()on the class that implements thejava.sql.Driverinterface.
With MySQL Connector/J, the name of this class iscom.mysql.jdbc.Driver. With this method, you
could use an external configuration file to supply the driver class name and driver parameters to use when
connecting to a database.
2.データ接続オブジェクトを作成し、
DriverManagerクラスからデータベース接続オブジェクトConnectionを作成します.DriverManagerクラスはJavaプログラムとJDBCドライバの間で機能し、ロードされたドライバが接続を確立できるかどうかを確認し、getConnectionメソッドを使用してデータベースのURL、ユーザー名、パスワードに基づいてJDBC Connectionオブジェクトを作成します.
Connection  conn = DriverManager.getConnection(url,user,password);
ここで、URL=プロトコル名+IPアドレス(ドメイン名)+ポート+データベース名、ユーザ名とパスワードとは、データベースにログインする際に使用されるユーザ名とパスワードを指します.(詳細はMySQL Connector/J Developer's Guideドキュメントを参照)
 
3.Statementオブジェクトを作成するには:
Statementクラスは、主に静的SQL文を実行し、生成された結果を返すオブジェクトです.ConnectionオブジェクトのcreateStatement()メソッドでStatementオブジェクトを作成できます.
(実際のプロジェクトではpreparedStatementの使用を推奨します).
5、Statementオブジェクトの関連メソッドを呼び出して対応するSQL文を実行する:
挿入や削除などの操作を含め、execuUpdate()メソッドでデータの更新に使用します.
StatementオブジェクトのexecuteQuery()メソッドを呼び出してデータのクエリーを行い、クエリーの結果ResulSetオブジェクトが得られます.ResulSetはクエリー・データベースを実行した後に返されるデータの集合を表し、ResulSetオブジェクトは現在のデータ行を指すポインタを持ちます.オブジェクトのnext()メソッドにより、ポインタが次の行を指し、カラム番号またはフィールド名でデータが取り出されます.next()メソッドがnullを返すと、次の行にデータが存在しないことを示します.
6、データベース接続を閉じる(重要!)