0 امتیاز
قبل در برنامه نویسی توسط (2.6هزار امتیاز)
ویرایش شده قبل توسط

لطفا یک توضیح کلی در مورد چگونگی کارکرد و روش استفاده از کلاس ResultSet که خروجی جستجو های پایگاه داده در این فرمت باز گردانده می شود بدهید.

مشکل من بیشتر سر این قضیه است که اگر متد ResultSet.next() را فرا خوانی نکنیم با یک exception با این مضمون مواجه می شویم:

JdbcSQLException: No data is available [2000-187]

همچنین چطور می توان چندین داده مورد نظر را از یک جست و جو استخراج کرد؟

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

کد زیر نحوه اجرای یک query با استفاده از JDBC بر روی پایگاه داده را نشان می دهد و اینکه چگونه می توان نتیجه query که در قالب ResultSet می آید را پردازش کرد:

    Connection con = DriverManager.getConnection(
                         "jdbc:myDriver:myDatabase",
                         username,
                         password);

    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");

    while (rs.next()) {
        int x = rs.getInt("a");
        String s = rs.getString("b");
        float f = rs.getFloat("c");
    }

متد next کلاس ResultSet باعث می شود اشاره گر رکورد های درون ResultSet یک سطر به جلو برود در صورتی که سطر دیگری وجود نداشته باشد این متد false بر می گرداند.

اما خطای "JdbcSQLException: No data is available [2000-187]" مخصوص پایگاه داده h2 است و مشخص می کند که اشاره گر رکورد های درون ResultSet در وضعیت درستی قرار ندارد کد های زیر کاملا مشکل را مشخص می کند:

کد غلط:

 ResultSet rs = stat.executeQuery("SELECT * FROM Person");
 rs.getString(1);

کد صحیح:

 ResultSet rs = stat.executeQuery("SELECT * FROM Person");
 rs.next();
 rs.getString(1);
قبل توسط (2.6هزار امتیاز)
یعنی اشاره گر خروجی پایگاه داده در ابتدا بر روی هیچ سطری قرار نداره؟
و با فرا خوانی next() روی اولین سطر قرار می گیره؟
قبل توسط (1.1هزار امتیاز)
بله دقیقا.

سوالات مشابه

+1 امتیاز
1 پاسخ 428 بازدید
+2 امتیاز
2 پاسخ 1.7هزار بازدید
+1 امتیاز
1 پاسخ 952 بازدید
+2 امتیاز
1 پاسخ 1.2هزار بازدید
0 امتیاز
2 پاسخ 7.6هزار بازدید
+2 امتیاز
2 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 2.4هزار بازدید
0 امتیاز
0 پاسخ 423 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...