Sobes.tech
Middle

Ինչպես է կառուցված դասը ResultSet Java-ում?

sobes.tech AI

Պատասխան AI-ից

ResultSet — դա java.sql պակետում գտնվող ինտերֆեյս է, որը ներկայացնում է SQL հարցման արդյունքները։ Այն տրամադրում է տվյալների հասանելիություն աստիճանաբար (մեկ տողից մեկ):

Հիմնական ասպեկտները՝

  • Կուրսոր: ResultSet աջակցում է կուրսորին, որը ցույց է տալիս ընթացիկ տվյալների տողը։ Նախնական դիրքը գտնվում է առաջին տողից առաջ:
  • Նավիգացիա: Կուրսորը տեղափոխելու համար օգտագործվում են next(), previous(), first(), last() մեթոդները։ next() վերադարձնում է true, եթե հաջողությամբ տեղափոխվել է հաջորդ տող, և false, եթե արդյունքի վերջն է հասել:
  • Տիպեր: Կան տարբեր ResultSet տիպեր՝
    • TYPE_FORWARD_ONLY: Կուրսորը շարժվում է միայն առաջ՝ առավել արդյունավետ:
    • TYPE_SCROLL_INSENSITIVE: Կուրսորը կարող է շարժվել ցանկացած ուղղությամբ, փոփոխությունները տվյալների բազայում չեն արտացոլվում:
    • TYPE_SCROLL_SENSITIVE: Կուրսորը կարող է շարժվել ցանկացած ուղղությամբ, փոփոխությունները արտացոլվում են (կարող է լինել ավելի դանդաղ):
  • Կոնկուրսիա: Կան որոշումներ՝ կարելի է արդյոք փոփոխել տվյալները ResultSet-ի միջոցով՝
    • CONCUR_READ_ONLY: Միայն ընթերցում:
    • CONCUR_UPDATABLE: Ուղղումներ և ընթերցումներ:
  • Տվյալների ստացում: Տվյալները ընթացիկ տողից ստացվում են get<Type>() մեթոդներով՝ օրինակ, getString(int columnIndex), getInt(String columnLabel), getDate(int columnIndex):
  • Փակել: Կարևոր է փակել ResultSet-ը օգտագործումից հետո՝ ռեսուրսները ազատելու համար, օգտագործելով close() մեթոդը։ Դա սովորաբար կատարվում է finally բլոկում կամ try-with-resources-ով:

Օրինակ օգտագործում՝

// Կարծում ենք, որ connection և statement արդեն initialize են
try (ResultSet resultSet = statement.executeQuery("SELECT id, name FROM users")) {
    while (resultSet.next()) {
        int id = resultSet.getInt("id");
        String name = resultSet.getString("name");
        System.out.println("User ID: " + id + ", Name: " + name);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

ResultSet-ը չի պահում բոլոր տվյալները հիշողության մեջ միաժամանակ, ինչը դարձնում է այն արդյունավետ մեծ տվյալների ծավալների դեպքում։