序文:JDBCとは何ですか
Javaデータベース接続(JDBC)は、Java言語で使用されるアプリケーションプログラムインターフェイスであり、クライアントプログラムがデータベースにアクセスする方法を標準化し、データベースのデータのクエリや更新などのメソッドを提供します。 JDBCは、Sun Microsystemsの商標でもあります。リレーショナルデータベースのJDBCです。
簡単に言えば、SQLステートメントの実行に使用されるJava APIです。 JDBCを介して、Javaプログラミングを使用してリレーショナルデータベースで動作することができます。カプセル化により、開発者は純粋なJava APIを使用してSQL実行を完了できます。
1。準備作業(i):mysqlインストールの構成と基本学習
JDBCを使用してデータベースを操作する前に、最初にデータベースが必要です。読者が自分で学ぶための3つのリンクを以下に示します。 SQL言語(学校での教室での学習を含む)の使用経験がある場合、最初の2つのリンクで十分です。
mysqlのダウンロード、インストール、展開、グラフィカルな詳細操作チュートリアル://www.vevb.com/article/87690.htm
INSERT、UPDATE、SELECT、削除などの基本操作を練習しながら、後で使用するテーブルを構築しながら、練習中に入門チュートリアルを読むことをお勧めします。
次の図は、次のデモに使用するデータベースの表です。
2。準備作業(2):データベースの対応するJARパッケージをダウンロードしてインポートします
JDBCを使用するには、プロジェクトに対応するJARパッケージをインポートする必要があります。データベースとJDBCパッケージの対応は、さまざまなデータベースに対応するJARパッケージ、ドライバークラス名、およびURL形式を参照できます。 Eclipseの下でのインポート方法:
プロジェクトアイコンを右クリックし、「プロパティ」を選択し、「java bulid path」で「外部ジャーの追加...」を選択し、ダウンロードおよび減圧後に取得したJARパッケージを選択します。
MySQLで動作している場合、次のインポートはエラーを報告しません。
com.mysql.jdbc.connectionをインポートします。 com.mysql.jdbc.preparedStatementをインポートします。
さらに、JDBCパッケージも必要です。直接インポートするだけです。
java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception;
3。JDBCの基本操作
簡単にするために、データベースに関連する操作、コマンド、およびパラメーターがハードコードされています。興味のある読者は、これらを探索して、データと操作の間の結合を減らすことができます。
まず特定のコードと練習を見てみましょう。この記事の5番目の部分は、使用されたAPIに関する簡単な研究を実施しました。
以下のすべてのメソッドとデータメンバーは、パブリッククラスのJDBCoperation内にあります。
(1)レコードクラスを定義する(オプション)
これは主に操作とインターフェイスの定義を促進するために行われ、必要ありません。
Static Class Student {private string id;プライベート文字列名;プライベートストリングセックス;プライベートストリングエイジ;学生(文字列名、文字列セックス、文字列年齢){this.id = null; //デフォルトthis.name = name; this.sex = sex; this.age = age; } public string getId(){return id; } public void setid(string id){this.id = id; } public string getname(){return name; } public void setName(string name){this.name = name; } public string getSex(){return sex; } public void setSex(string sex){this.sex = sex; } public string getage(){return age; } public void Setage(string age){this.age = age; }}(2)接続の検索
データベースへの接続は、操作前に取得する必要があります。
プライベート静的接続getConn(){string driver = "com.mysql.jdbc.driver"; string url = "jdbc:mysql:// localhost:3306/samp_db";文字列username = "root";文字列password = "";接続conn = null; try {class.forname(driver); // classloader、対応するドライバーconn =(connection)drivermanager.getConnection(url、username、password)をロードします。 } catch(classNotFoundException e){e.printstacktrace(); } catch(sqlexception e){e.printstacktrace(); } return conn;}(3)挿入
private static int insert(学生学生){connection conn = getConn(); int i = 0; string sql = "学生に挿入(名前、性別、年齢)値(?、?、?)";準備PSTMT; try {pstmt =(preatedstatement)conn.preparestatement(sql); pstmt.setString(1、student.getName()); pstmt.setString(2、student.getSex()); pstmt.setString(3、student.getage()); i = pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch(sqlexception e){e.printstacktrace(); } return i;}(4)更新
private static int update(学生学生){connection conn = getConn(); int i = 0; string sql = "update sents set age = '" + sustent.getage() + "' where name = '" + sustent.getname() + "'";準備PSTMT; try {pstmt =(preatedstatement)conn.preparestatement(sql); i = pstmt.executeUpdate(); system.out.println( "resutl:" + i); pstmt.close(); conn.close(); } catch(sqlexception e){e.printstacktrace(); } return i;}(5)選択
例としてxxxから[select *]を使用します。
private static integer getall(){connection conn = getConn();文字列sql = "select * from sustent";準備PSTMT; try {pstmt =(preatedstatement)conn.preparestatement(sql);結果rs = pstmt.executequery(); int col = rs.getmetadata()。getColumnCount(); System.out.println( "======================================================================================== while(rs.next()){for(int i = 1; i <= col; i ++){system.out.print(rs.getString(i)+"/t"); if((i == 2)&&(rs.getString(i).length()<8)){system.out.print( "/t"); }} system.out.println( ""); } system.out.println( "======================================================================= } catch(sqlexception e){e.printstacktrace(); } nullを返します;}(6)削除
private static int delete(string name){connection conn = getConn(); int i = 0; string sql = "name = '" + name + "'" " + name +" '"を削除します。準備PSTMT; try {pstmt =(preatedstatement)conn.preparestatement(sql); i = pstmt.executeUpdate(); system.out.println( "resutl:" + i); pstmt.close(); conn.close(); } catch(sqlexception e){e.printstacktrace(); } return i;}4。テスト
テストする前に、対応するデータベースサービスをシステムで開く必要があります。 Windowsの下のMySQL起動コマンドは、Net StartMySQLです
テストコード
public static void main(string args []){jdbcoperation.getall(); jdbcoperation.insert(new Student( "Achilles"、 "Male"、 "14")); jdbcoperation.getall(); jdbcoperation.update(new Student( "Bean"、 ""、 "7")); jdbcoperation.delete( "achilles"); jdbcoperation.getall();}日食の出力
========================================================================================================================================================================================================================================================= ========================================================1 Ender male 8 2 Bean male 6 3 Petra fema 9 4 Peter male 9 5 _Graff male 40 6 GOD fema 255 7 Achilles Male 14 ============================resutl: 1resutl: 1============================1 Ender male 8 2 Bean male 7 3 Petra fema 9 4 Peter male 9 5 _Graff male 40 6 GOD fema 255 ===========================
V.コード分析
データベースの追加、削除、変更、検索の上記のプロセスでは、共通して見つけることができます。つまり、共通のプロセスです。
(1)接続オブジェクトとSQLクエリコマンド文字列を作成します。
(2)SQL Queryコマンドを接続オブジェクトに渡し、準備したオブジェクトを取得します。
(3)reparedStatementオブジェクトでexecuteUpdate()またはexecuteQurey()を実行して結果を取得します。
(4)準備された測定オブジェクトと接続オブジェクトを次々に閉じます。
JDBCを使用する場合、最も一般的なタイプの接触は接続と準備された測定であり、selectの結果クラスであることがわかります。
繋がり
Java.sql
繋がり
すべてのスーパーインターフェイス:ラッパー
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)
Public Interface Connection ExtententEnds Lapper
特定のデータベースへの接続(セッション)。接続コンテキストでSQLステートメントを実行し、結果を返します。
接続オブジェクトのデータベースは、テーブル、サポートされているSQL構文、ストアドプロシージャ、この接続関数などを説明する情報を提供できます。この情報は、getmetadataメソッドを使用して取得されます。
preatedstatemnt
Java.sql
インターフェイス準備測定
すべてのスーパーインターフェイス:ステートメント、ラッパーはすべて既知のサブインターフェイス:callablestatement
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)
public Interface reparedStatementExtentendsステートメント
プリコンパイルされたSQLステートメントを表すオブジェクト。
SQLステートメントは、準備されたオブジェクトに事前コンパイルされ、保存されます。このステートメントは、このオブジェクトを使用して複数回効率的に実行できます。
一般的な方法
boolean execute()
この準備オブジェクトでSQLステートメントを実行します。これは、あらゆる種類のSQLステートメントにすることができます。
resultet executequery()
この準備オブジェクトでSQLクエリを実行し、クエリによって生成された結果のオブジェクトを返します。
int executeUpdate()
SQLステートメントを実行したこの準備オブジェクトでは、挿入、更新、または削除ステートメントなどのSQLデータ操作言語(DML)ステートメント、またはDDLステートメントなどの返品コンテンツのないSQLステートメントなどのSQLデータ操作言語(DML)ステートメントでなければなりません。
結果セット
Java.sql
インターフェイス結果セット
すべてのスーパーインターフェイス:ラッパーすべての既知のサブインターフェイス:Cachedrowset、FilterDrowset、JDBCrowset、JoinRowset、Rowset、Syncresolver、Webrowset
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)
Public Interface ResultsEttextentends Lapper
データベースの結果セットを表すデータテーブルは、通常、データベースをクエリするステートメントを実行することにより生成されます。
6。問題について考えてください
1.各SQL操作には、接続を確立および閉じる必要があります。これにより、必然的に多くのリソースオーバーヘッドが消費されます。それを避ける方法は?
分析:接続プーリングを使用して、毎回接続を確立して閉じることなく、接続の統一されたメンテナンスを実行できます。実際、これはJDBCをカプセル化するための多くのツールが使用されるものです。
2。着信データの形式がJavaコードのデータベース定義とは異なる場合はどうすればよいですか?たとえば、Java文字列オブジェクトをデータベースのtinyint属性に割り当てます。
分析:SQLステートメントを実行すると、データベースは変換を試みます。私の実験によると、TinyIntの年齢属性を文字列オブジェクトを使用して純粋な文字で渡す場合、0に変換されます。特定の変換ルールはデータベースに関連する必要があります。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。