MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JDBCには何種類の結果セットがありますか?


結果セットには、転送のみと双方向の2種類があります。

結果セットのみを転送: カーソルが一方向にのみ移動するResultSetオブジェクトは、前方のみのResultSetと呼ばれます。デフォルトでは、JDBC結果セットは転送専用の結果セットです。

前方に移動できるのはResultSetsのみです。 next()を使用する ResultSetインターフェースのメソッド。ポインタを現在の位置から次の行に移動します。このメソッドはブール値を返します。現在の位置の横に行がない場合はfalseを返し、そうでない場合はtrueを返します。

したがって、whileループでこのメソッドを使用すると、ResultSetオブジェクトの内容を繰り返すことができます。

while(rs.next()){
}

以下に示すようなコンテンツを含むdatasetという名前のテーブルがあるとします。

+--------------+-----------+
| mobile_brand | unit_sale |
+--------------+-----------+
| Iphone       |      3000 |
| Samsung      |      4000 |
| Nokia        |      5000 |
| Vivo         |      1500 |
+--------------+-----------+

次の例では、データセットのすべてのレコードを取得します 表を作成し、結果を出力します:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RetrievingData {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/TestDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from Dataset");
      System.out.println("Contents of the table");
      while(rs.next()) {
         System.out.print("Brand: "+rs.getString("Mobile_Brand")+", ");
         System.out.print("Sale: "+rs.getString("Unit_Sale"));
         System.out.println("");
      }
   }
}

出力

Connection established......
Contents of the table
Brand: Iphone, Sale: 3000
Brand: Samsung, Sale: 4000
Brand: Nokia, Sale: 5000
Brand: Vivo, Sale: 1500

双方向結果セット: 双方向のResultSetオブジェクトは、カーソルが前後方向に移動するオブジェクトです。

ConnectionインターフェースのcreateStatement()メソッドには、結果セットのタイプと並行性のタイプを表す2つの整数値を受け入れるバリアントがあります。

Statement createStatement(int resultSetType, int resultSetConcurrency)

双方向の結果セットを作成するには、タイプをResultSet.TYPE_SCROLL_SENSITIVEまたはResultSet.TYPE_SCROLL_INSENSITIVEとして、並行性とともにこのメソッドに次のように渡す必要があります。

//Creating a Statement object
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);

次の例は、双方向のResultSetの作成を示しています。ここでは、テーブル名データセットからデータを取得する双方向のResultSetオブジェクトを作成しようとしています。また、 previous()を使用して、データセットテーブルの行を最後から最初に出力しようとしています。 メソッド。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class BidirectionalResultSet {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/TestDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from Dataset");
      rs.afterLast();
      System.out.println("Contents of the table");
      while(rs.previous()) {
         System.out.print("Brand: "+rs.getString("Mobile_Brand")+", ");
         System.out.print("Sale: "+rs.getString("Unit_Sale"));
         System.out.println("");
      }
   }
}

出力

Connection established......
Contents of the table
Brand: Vivo, Sale: 1500
Brand: Nokia, Sale: 5000
Brand: Samsung, Sale: 4000
Brand: IPhone, Sale: 3000

  1. セキュリティの脆弱性はいくつあり、どのように評価されますか?

    毎年、セキュリティおよびテクノロジー企業は、何千もの脆弱性の詳細を公開しています。メディアはこれらの脆弱性について適切に報告し、最も危険な問題を強調し、安全を維持する方法についてユーザーにアドバイスします。 しかし、これらの数千の脆弱性のうち、実際に悪用されているものはほとんどないと言ったらどうでしょうか? では、セキュリティの脆弱性はいくつありますか。セキュリティ会社は脆弱性の程度を判断しますか? セキュリティの脆弱性はいくつありますか? Kenna Securityの予測レポートシリーズの優先順位付けでは、2019年に、セキュリティ会社が18,000を超えるCVE(Common Vu

  2. どのような種類のオンライン広告が受け入れられますか?

    私たちは皆、オンライン広告を見るとうめき声を上げる傾向があり、むしろそれらなしでやりたいと思っています。ただし、一部のWebサイトや組織では、Webサイトの料金を支払うために何らかの方法でお金を稼ぐ必要があるため、これらは必需品になる可能性があります。それを考えると、どのような種類のオンライン広告が受け入れられますか? だからあなたはあなたの好きなウェブサイトの1つに行きます、そしてそのサイトにはたくさんの広告があります。サイドバーにあるものもあれば、読んでいるテキスト全体に混在しているものもあります。次に、Googleで情報を検索し、そこに広告を表示します。検索結果の1つをクリックすると、