JavaWebインタビュー記事(7)

61.データベースへのJDBCアクセスがある基本的な手順は何ですか?
図1に示すように、駆動負荷
2、接続オブジェクトを取得することにより、接続のDriverManagerオブジェクト
セッション接続オブジェクト取得することにより、3
、4セッションを変更して再検索データによる付加および欠失を、オブジェクト封入
5、近いリソースを

 

62、PreparedStatementのと声明の違いについて話
1、効率:通常のセッションオブジェクトよりもプリコンパイルセッション高効率、システムは同じSQL文のデータベースを再びコンパイルしていない
2、セキュリティ:効果的にSQLインジェクション攻撃を避けることができます!SQLインジェクション攻撃は、いくつかの特殊文字を入力して、クライアントから違法である、サーバがまだ収集情報とデータのプログラムやサーバーにSQLステートメントを構築するときに適切に構築することができます。
例:「t_userから選択*どこのuserName =「」+ userNameに+ 『『とパスワード=』』 +パスワード+「」」
ユーザ名とパスワードが『1』であるか『1』の場合= 『1』、 生産SQL文は次のとおりです。
「T_USERからSELECT *どこのuserName =または=とパスワード=または=ステートメントのセクションでは、データのフィルタリングを果たさない『1' 。』 1' 『1' 』 1' 『1' 』 1'効果。

 

63は、ステップは、JDBCプログラミングにおける取引の概念、プロセス取引について話しています。
トランザクションが実行される作業の単一の論理ユニットとしての一連の動作です。
図2に示すように、原子性、一貫性、独立性および耐久性(ACID)特性、トランザクションになるための唯一の方法として知られている4つの属性を有していなければならない作業の論理ユニット、
トランザクション処理ステップ:
3は、conn.setAutoComitは(falseに)提供しますマニュアルの提出のために提出され
たトランザクションに提出する4、conn.commit()
5、異常な、ロールバックconn.rollbackを();

 

64、原理をプーリング、データベース接続。なぜ使用接続プーリング。
図1に示すように、データベース接続は、接続プールの複数の接続動作を共有することができる、時間のかかる操作です。
2、データベース接続プールの基本的な考え方は、データベース接続のための「バッファー・プール」を作成することです。バッファプール内の接続の事前一定数に置かれ、必要なときにデータベース接続を確立、単にその後、使用後に戻ってそれを置く、1の「プール」を削除します。私たちは、接続プールの最大数を設定することにより、データベースシステムに接続されている無限のを防ぐことができます。さらに重要なことは、我々は、システム開発、テストおよびパフォーマンス・チューニングのための基礎を提供し、接続管理システムのデータベース接続プールの使用状況の数を監視することができます。
図3に示すように、接続プールを使用してデータベース接続リソースの管理を改善することです

 

65、汚れがJDBCを読み込む何ですか?ダーティリードを防ぐために、どのデータベース分離レベル?

  私たちは、トランザクションを使用する場合は、そのような状況があるかもしれない別のクエリは、ちょうどこの更新された値を読みながら、ちょうど更新されたデータの行は、そこにあります。データは永続化のために更新されていないので、これは、ダーティリードにつながった、ビジネスはデータのこの行はデータが無効であるように、ロールバックすることができる更新されます。データベースTRANSACTIONREADCOMMITTEDTRANSACTIONREPEATABLEREAD、およびTRANSACTION_SERIALIZABLEダーティー読み取り分離レベルを防ぐことができます。

 

66、ファントムリードを防止することができるファントム読み出し、分離レベルは何ですか?

  魔法の読書は、クエリが返すを何度も実行するトランザクションを指しますが、それは別の値です。トランザクションが特定の条件、データ照会に応じて行い、その後、別のトランザクションは、クエリを満たすためにデータの行が挿入されていると仮定する。再度、このクエリを実行したら、このトランザクションの後、返される結果セットは、ちょうど挿入されたデータの新しい作品が含まれます。このデータの新しいラインは仮想線と呼ばれ、この現象は、ファントム読み取りと呼ばれています。

  のみTRANSACTION_SERIALIZABLEファントムを防止するための分離レベルを読み込みます。

 

67、JDBC DriverManagerは行うために使用されますか? 
JDBC DriverManagerクラスは、我々はそれを介してデータベース接続を作成する必要があり、工場です。JDBCドライバクラスが中にロードされると、それは内部DriverManagerクラスに自分自身を登録
我々は、データベースを検索するためにそこに、たDriverManager.getConnection構成データベース()メソッドへの駆動接続を使用DriverManagerのレジスタを通過し、戻ります呼び出し元のプログラムへ。

 

68違いは、実行は何ですか、のexecuteQuery、executeUpdateのはありますか? 
        クエリ結果がResultSet、戻り真この方法であれば1を、実行する(文字列のクエリ)メソッドのステートメントは、任意のSQLクエリを実行するために使用されます。結果は、このような挿入または更新クエリとしてのResultSet、ない場合は、falseを返します。我々はそれgetResultSetメソッドResultSetメソッドを介して取得することができ、またはgetUpdateCountは()メソッドによって更新されたレコードの数を取得します。 
        2、のexecuteQuery(文字列クエリ)インターフェースの文は、クエリの実行を選択するために使用され、ResultSetを返しています。レコードを見つけることができない場合でも、ResultSetがnullになりません戻りました。私たちは通常、その挿入または更新文で渡された場合ので、それはエラーメッセージが「executeQueryメソッドを使用することはできませんでスローされます、のexecuteQueryを使用してクエリを実行し 、更新」 java.util.SQLExceptionの。
        DML文は、それが更新された場合は3、のexecuteUpdate(String型のクエリ)メソッドの文の挿入や更新/削除(DML)ステートメントを実行するために使用される、またはDDL文のために何を返さない、戻り値は、int型ですそれがDDLであれば、いくつかは、それは0を返します。 
あなたは、ステートメントが場合にのみ、execute()メソッドを使用すべきかわからない場合にのみ、そうしないとのexecuteQueryやexecuteUpdateのメソッドを使用する必要があります。

 

69、一般的にはショーのうちSQLクエリ結果のページには、どのように行うには?

オラクル:

SELECT * FROM 
(学生からtempid AS SELECT *、ROWNUM)T 
ここで、「+のpageSize *(ページ番号-1)+」及び」+のpageSize *ページ番号の間t.tempid

MySQLの:
   「+のpageSize *(PAGENUMBER-1)+ 『』 + pageSizeを制限生徒から選択*;

SQL Serverの: 
   選択していない+のid生徒からトップ」+のpageSize +」* 
選択トップ」+のpageSize *(PAGENUMBER-1)+ ID IDによる学生のための)+  
「IDによるオーダー。

 

70、JDBCのResultSetそれは何ですか? 
ResultSetを返しますデータベースを照会した後、それは、データテーブル、クエリの結果セットのようなものです。 
ResultSetオブジェクトは、カーソルを維持する現在の行を指します。最初はカーソルが最初の行を指しています。あなたが呼び出した場合、それ以上のデータ、next()メソッドが返すの虚偽がない場合、カーソルの次のResultSet()メソッドは、1行下に移動します。これは、データセットをループするために使用することができます。 
デフォルトのResultSetのカーソルだけ下に移動することができ、更新することはできません。意味することにあなただけの最後の行に最初の行から再び横切ることができます。しかし、あなたは背中や更新可能なResultSetをロールすることができます作成することができます

閉鎖または再実行されるのResultSet Statementオブジェクトを生成するとき、または次のResultSetを取得するとき、ResultSetオブジェクトも自動的に閉じられます。 
ResultSet getterメソッドにより、起動回数からデータを取得するために、列名または列を渡します。

おすすめ

転載: www.cnblogs.com/mxb0611/p/11912101.html