JDBC - データベース接続

JDBC概念:

Javaデータベース接続は、(Javaデータベース接続はJDBCをいう。)Java言語は、クライアントプログラムがデータベースへのアプリケーションインタフェースにアクセスする方法を調整するために使用されます。

MySQLデータベースでの接続:JDBC:MySQLの:// localhostを:3306 / ?データベース名をtrueに&characterEncoding = = useUnicode&serverTimezone = UTF8&useSslオプションGMT%2B8 =偽」;

データベースドライバをロードします

// 1、ドライバのロード 
にClass.forName( "com.mysql.cj.jdbc.Driverを");

あなたはSQLサーバーをロードする場合:Class.forNameの( "com.microsoft.jdbc.sqlserver.SQLServerDriver");

接続を確立するには

データベースURLデータベースプログラマは、URLアドレスを使用してJDBC接続プログラムを伝える場所識別データベースのためのURL。

URLが書かれている:" JDBC:MySQLの:// localhostの:? 3306 /データベース名パラメータ名=パラメータ値を..."

URLアドレスの共通データベースの文言:

オラクルます。jdbc:oracle:thin:@localhost:2521:データベース名

SQLServer:JDBC:マイクロソフトでは:のSQLServer:// localhostを:1433;データベース名=データベース名

MySQLの:JDBC:MySQLの:// localhostを:3306 /データベース名

接続

、コレクションのためにデータベースをリンクするために使用されるJDBC接続プログラムは、データベースプログラミング、データベースクライアントの中で最も重要な目的の一つであり、すべての相互作用は、接続オブジェクトを介して行われます。

创建方法:接続CONN =したDriverManager.getConnection(URL、ユーザー、パスワード) ;

一般的な方法:

のcreateStatement()は、データベースオブジェクトに送信されたSQL文を作成します

のprepareStatement(SQL) ;のprepareStatementがデータベースにプリコンパイルされたSQLオブジェクトを作成、送信

●  のprepareCall(SQL) ;ストアドプロシージャの実行のCallableStatementオブジェクトを作成します

●  にsetAutoCommit(ブール値はautoCommit) ;セットのトランザクションを自動的に提出するかどうか

 コミット() ;リンク上でトランザクションをコミット

●  ROLLBACK() ;このリンク上でトランザクションをロールバック

文字列のURL = "jdbc.mysql:// localhostを :3306 / データベース名" ; 
文字列名 = "ユーザ名" ; 
文字列のパスワード = "ユーザーパスワード" ; 
接続でCONN = ヌル;
 // 2、買収およびデータベース・リンク 
CONN = DriverManager.getConnection(URL、ユーザ名、パスワード) ;

SQL文を実行します

文の SQL文をデータベースに送るためのStatement JDBCプログラムのオブジェクト:。

作成方法:書のST = conn.createdStatement () 。

一般的な方法:

●のexecuteQuery(文字列のSQL);データベースにクエリを送信します

●のexecuteUpdate(文字列のSQL);挿入、更新またはステートメントを削除するために送信するためのデータベース

●(文字列のSQL)を実行し、データベースへのすべての文を送信するために

●addBatch(文字列のSQL);バッチに複数のSQL文を送信

●がexecuteBatch();実行するデータベースへのSQL文のグループを送信します。

STは、Statement = ヌルを;
 // 3を、データベースへの声明取得したSQL文を送信するための 
ST = conn.createdStatementを();
 // 。SQLデータベースに送信された4、 
文字列のSQL =「ID、名前を選択から、パスワード、電子メール、誕生日をユーザー
st.executeQuery();

PreparedStatementの:このクラスは、文オブジェクトのサブクラスです

作成方法:PreparedStatementのST = conn.preparedStatement () 。

ST =のPreparedStatement はnull ; 
文字列のSQL = "SELECT *ユーザーのパスワードから、名前= =?" ;
 // 3、のSQL文をデータベースに送るためのPreparedStatementを得る 
ST = conn.preparedStatement(SQL); // 受信SQL文は、プリコンパイルされ 
st.setString(1 、ユーザ名); 
st.setString( 2 、パスワード);
 // 4、データベースSQLに送信 
st.executeQuery(); // ここでは、SQL文を渡しません

ステートメントとPreparedStatementの差

SQLインジェクションを回避するためのPreparedStatement Statementオブジェクトの面で問題に関して

如:文字列のSQL = "+ LOGINNAME + 'ここでログイン名=管理者からの選択* "" 'とloginpwd =' "+ loginPwd +"'" ;

アプリケーションには:

- 「アカウントを入力してください:

333

- 「あなたのパスワードを入力してください:

wer'or'1 '=' 1

トランスミッションは、実際には:SELECT * WHERE ADMIN LoginNameに= '333'からとloginpwd = 'は= wer'or'1' '1  '、ログインが成功します! 

声明では、SQLコンパイル頻繁データベースは、データベースは、バッファオーバーフローを引き起こす可能性があります。SQLのためのPreparedStatementは、データベースの効率を改善するためにプリコンパイルすることができます。

そして、唯一の代替形式のプレースホルダを許可するSQLパラメータのためのPreparedStatementは、SQL文の作成を簡素化します。

結果を得ます

結果の実装の代わりに、SQL文のJDBCのResultSetプログラム。実行結果のResultSetパッケージは、使用方法同様の形で、ResultSetオブジェクトは、カーソル線データテーブルへのポインタを維持する場合、最初の時間は、カーソルは、カーソルが特定のを指してもよいことを、最初の行の前ResultSet.next()メソッドを呼び出しますデータラインは、ラインのデータを取得するメソッドを呼び出します。

行を取得しますResultSetが結果セット圧延するための方法を提供し、

●次の();次の行に移動

●前();前列に移動

●絶対値(INT行);特定の行に

●beforeFirstの(); ResultSetが一番に移動

●afterLastの(); ResultSetが最後尾に移動

値を取得オブジェクトは、データを取得する取得するための方法を提供することにあるように、包装用の実行結果ので、ResultSetを

●任意のタイプのデータを取得します:

 getObject(int型のインデックス);

 getObjectメソッド(文字列COLUMNNAME)。

●データの指定されたタイプを取得します:

 getString(int型のインデックス);

 getString(文字列COLUMNNAME)。

ResultSetのRS = nullを// 4、向数据库发SQL、并获取代表结果集的ResultSetの 
文字列のSQLが= "ユーザーからのID、名前、パスワード、電子メール、誕生日を選択して" ; 
RS = st.executeQuery(SQL)。

// 5、取出结果集的数据
rs.afterLast()。
rs.previous(); 
System.out.println( "ID =" + rs.getObject( "ID" ))。
System.out.println( "名=" + rs.getObject( "名前" )); 
System.out.println( "パスワード=" + rs.getObject( "パスワード" )); 
System.out.println( "Eメール=" + rs.getObject( "Eメール" )); 
System.out.println( "誕生日=" + RS。getObject( "誕生日" ));
//全部またはループID削除し
ながら(rs.nextを()){ 
    文字列ID = rs.getString(1); // 表1の列数はデータベースを表し、IDは、最初の列( "ID")であってもよいです!
    System.out.println( "ID =" + ID); 
}

 

おすすめ

転載: www.cnblogs.com/Dm920/p/11698639.html