آموزش جاوا - SE پایگاه داده(5) - ResultSet = چاپ مقادیرجدول

یک جدول داده که معمولا با اجرای دستورات پرسجوی بوجود می آید، Resultset (مجموعه ی نتایج)را ارائه می دهد. Resultset در واقع یک مجموعه نتیجه است که در آن واحد فقط یک سطر را نمایش می دهد. این شی مستقیما به
سه‌شنبه، 3 تير 1393
تخمین زمان مطالعه:
پدیدآورنده: محمد رضا صفی الدین اردبیلی
موارد بیشتر برای شما
آموزش جاوا - SE پایگاه داده(5) - ResultSet = چاپ مقادیرجدول
آموزش جاوا  - SE پایگاه داده(5) -  ResultSet = چاپ مقادیرجدول
 

مترجم: حبیب الله علیخانی
منبع:راسخون




 

اینترفیس ResultSet

یک جدول داده که معمولا با اجرای دستورات پرسجوی بوجود می آید، Resultset (مجموعه ی نتایج)را ارائه می دهد. Resultset در واقع یک مجموعه نتیجه است که در آن واحد فقط یک سطر را نمایش می دهد. این شی مستقیما به دیتابیس وصل می شود. یک شی ResultSet مکان نما را در سطر جاری از داده ها نگه می دارد. در اصل مکان نما قبل از اولین خط قرار می گیرد. متد next مکان نما را به سطر بعد منتقل می کند. هر بار که از متد next استفاده می کنیم ، یک سطر یک سطر به جلو می برد و پیمایش می کند و زمانیکه سطری وجود نداشته باشد، False را برمی گرداند. همچنین می تواند در یک حلقه ی While برای تکرار در Resultset (مجموعه ی نتایج) استفاده شود یعنی از این طریق می توان شی Resultset را پیمایش کرد. در انتهای این بخش چند متد ارائه شده است.
برای استفاده از شی Resultset باید حتما کانکشن برقرار باشد و اگر اول کانکشن را close کنیم (con.close;)، بعدش از Resultset استفاده کنیم، خطا می گیرد.
شی Resultset پیشفرض، غیر قابل آپدیت است و مکان نمایی دارد که فقط به سمت جلو حرکت می کند. بنابراین می توانید فقط یکبار و فقط از سطر اول به سطر آخر تکرار شود (TYPE_FORWARD_ONLY). این ممکن است که اشیا ResultSet را بسازد که قابل اسکرول و/یا قابل آپدیت (TYPE_SCROLL_INSENSITIVE ، TYPE_SCROLL_SENSITIVE) هستند. قطعه کد زیر، که در آن con یک شی Conection معتبر است که نشان می دهد که چگونه یک result set ایجاد می شود که قابل اسکرول و به تغییرات دیتابیس حساس نمی باشد و خود قابل آپدیت است.

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet res = stmt.executeQuery("SELECT a, b FROM TABLE2");
// rs will be scrollable, will not show changes made by others,
// and will be updatable

در این شی، آدرس چهار وضعیت دارد : first (ابتدا) ، last (انتها) ، beforfirst (قبل از ابتدا) ، afterlast (بعد از انتها).
به عنوان مثال می خواهیم تعداد سطر های یک Resultset را بیابیم. کدهای بخش قبل را ادامه می دهیم:

1 package first;
2 import java.sql.Connection;
3 import java.sql.DriverManager;
4 import java.sql.ResultSet;
5 import java.sql.Statement;
6
7 public class Tester {
8 public static void main(String[] args) {
9 try {
10
11 Class.forName("com.mysql.jdbc.Driver").newInstance();
12 String url= "jdbc:mysql://localhost:3306/db1?user=root&password=123";
13 Connection con=DriverManager.getConnection(url);
14 Statement st = con.createStatement();
15 ResultSet rs= st.executeQuery("select * from student");
16
17 rs.close();
18 st.close();
19 con.close();
20
21 } catch (Exception ex) {
22 System.err.println(ex.getMessage());
23 } }
24 }

ابتدا rs را به آخر می فرستیم(از طریق متد Last()) و سپس می گوییم شماره ی سطر را در متغییری بریزد. ( از طریق متد getRow() ). کدهای زیر را از خط 16 یعنی قبل از بسته شدن rs، می نویسیم:

rs.last();
int rowcount= rs.getRow();
System.out.println("count of student table row's: "+rowcount );

خروجی آن به صورت زیر می باشد:
آموزش جاوا  - SE پایگاه داده(5) -  ResultSet = چاپ مقادیرجدول
اکنون می خواهیم داده های جدول student را پیمایش کنیم و چاپ کنیم. از متد next() مکان نما را به جلو می بریم و برای پیمایش از حلقه ی while استفاده می کنیم اما چون در قسمت بالا آن را به انتهای rs (از طریق متد Last()) برده ایم، باید آن را به ابتدای rs ببریم، البته به قبل از ابتدا می بریم تا سطر اول را هم در نظر بگیرد(از طریق متد beforFirst()). و سپس از طریق متد getstring() مقادیر ستون های جدول را بازیابی می کند. مقدار ورودی این متد برچسب ستون می باشد.
کدهای زیر را در ادامه ( قبل از بسته شدن rs) می نویسیم:

rs.beforeFirst();
while (rs.next()) {
System.err.println(rs.getString("sname") + "\t" +rs.getString("sfamily")
// +"\t"+ rs.getString("scity")+"\t"+rs.getString("birthyear")
// +"\t"+rs.getString("tell")
);

و خروجی آن به صورت زیر می باشد:
آموزش جاوا  - SE پایگاه داده(5) -  ResultSet = چاپ مقادیرجدول
در زیر چند متد ارائه شده:

  متد ها

boolean

absolute(int row)
مکان نما را به شماره سطر گرفته شده در این شی ResultSet منتقل می کند. .

void

afterLast()

مکان نما را به انتهای شی ResultSet ، درست بعد از آخرین سطر منتقل می کند.

void

beforeFirst()

مکان نما را به ابتدای شی ResultSet ، درست قبل از اولین سطر منتقل می کند.

void

cancelRowUpdates()

  قابلیت آپدیت  سطر جاری در شی ResultSet  را لغو می کند.

void

clearWarnings()

همه ی  گزارشات هشدار را در شی ResultSet  را پاک می کند.

void

 
close()

شی ResultSet دیتابیس و منابع JDBC را فورا آزاد می سازد، بجای  اینکه صبر کند تا زمانیکه به طور اتوماتیک بسته شود.

void

deleteRow()
سطر جاری را از شی Resultset  ودیتابیس موردنظر حذف می کند.

int

findColumn(String columnName)

نام ستون Resultset گرفته شده را به ایندکس(شاخص) گرفته شده نگاشت می کند.

boolean

first()
مکان نما را به اولین سطر در شی Resultset منتقل می کند.

Array

getArray(int i)

مقدار ستون معین را در سطر جاری شی Resultset به عنوان یک شی آرایه در زبان برنامه نویسی جاوا را بازیابی می کند.

Array

getArray(String colName)

مقدار ستون معین را در سطر جاری شی Resultset به عنوان یک شی آرایه در زبان برنامه نویسی جاوا را بازیابی می کند.

InputStream

getAsciiStream(int columnIndex)

مقدار ستون معین (که شماره ی آن آمده) را در سطر جاری از شی Resultset را در قالب رشته ای از کاراکترهای اسکی بازیابی می کند.

InputStream

getAsciiStream(String columnName)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب رشته ای از کاراکترهای اسکی بازیابی می کند

BigDecimal

getBigDecimal(int columnIndex)
مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب java.math.BigDecimal با دقت کامل بازیابی می کند

BigDecimal

getBigDecimal(int columnIndex, int scale)

 نامعتبر

BigDecimal

getBigDecimal(String columnName)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب java.math.BigDecimal با دقت کامل بازیابی می کند.

BigDecimal

getBigDecimal(String columnName, int scale)
نامعتبر

InputStream

getBinaryStream(int columnIndex)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک رشته باینری از بایتهای تفسیر نشده بازیابی می کند.

InputStream

getBinaryStream(String columnName)
مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک رشته باینری از بایتهای تفسیر نشده بازیابی می کند.

boolean

getBoolean(int columnIndex)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک  بولین در زبان برنامه نویسی جاوا بازیابی می کند.

boolean

getBoolean(String columnName)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک  بولین در زبان برنامه نویسی جاوا بازیابی می کند.

byte

getByte(int columnIndex)
مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک بایت در زبان برنامه نویسی جاوا بازیابی می کند.

byte

getByte(String columnName)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک بایت در زبان برنامه نویسی جاوا بازیابی می کند.

byte[]

getBytes(int columnIndex)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک  آرایه بایت در زبان برنامه نویسی جاوا بازیابی می کند.

byte[]

getBytes(String columnName)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک  آرایه بایت در زبان برنامه نویسی جاوا بازیابی می کند.

Reader

getCharacterStream(int columnIndex)

مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک شی java.io.Reader بازیابی می کند.

String

getCursorName()

نام مکان نمای SQL استفاده شده با شی Resultset را بازیابی می کند.

int

 
getRow()
شماره سطر جاری را بازیابی می کند.

Int

getInt(int columnIndex)

مقدار ستون معین در سطر جاری  از شی ResultSet در قالب integer  بازیابی می کند.

Int

getInt(String columnName)

مقدار ستون معین در سطر جاری  از شی ResultSet در قالب string  بازیابی می کند.

String

getString(int columnIndex)

مقدار ستون معین در سطر جاری  از شی ResultSet در قالب string  بازیابی می کند.

String

 

getString(String columnName)

مقدار ستون معین در سطر جاری  از شی ResultSet در قالب string  بازیابی می کند.

Statement

getStatement()

شی Statement که شی Resultset را تولید می کند، را بازیابی می کند.

URL

getURL(int columnIndex)
مقدار ستون معین در سطر جاری  از شی ResultSet به عنوان یک شی java.net.URL در زبان برنامه نویسی بازیابی می کند.

URL

getURL(String columnName)

مقدار ستون معین در سطر جاری  از شی ResultSet به عنوان یک شی java.net.URL در زبان برنامه نویسی بازیابی می کند.

SQLWarning

getWarnings()
اولین گزارش هشدار با فراخوانی روی شی Resultset را بازیابی می کند.

boolean

rowDeleted()
تعیین می کند که آیا سطری حذف شده یا خیر.

boolean

rowInserted()

بازیابی می کند که آیا چیزی به سطر جاری اضافه شده یا خیر.

boolean

rowUpdated()
تعیین می کند که آیا سطرجاری آپدیت شده یا خیر.

boolean

wasNull()
گزارش می دهد که آیا آخرین ستون خوانده شده null است یا نه.

void

insertRow()
مقادیر را به سطر، به شی Resultset و پایگاه داده وارد می کند.

boolean

isAfterLast()
تعیین می کند که آیا مکان نما بعد از آخرین سطر در شی Resultset قرار دارد.

boolean

isBeforeFirst()

تعیین می کند که آیا مکان نما قبل از اولین سطر در شی Resultset قرار دارد.

boolean

isFirst()

تعیین می کند که آیا مکان نما  روی اولین سطر در شی Resultset قرار دارد.

boolean

isLast()

تعیین می کند که آیا مکان نما  روی آخرین سطر در شی Resultset قرار دارد.

boolean

last()
مکان نما را به آخرین سطر در شی Resulset   منتقل کرد.

void

moveToInsertRow()
مکان نما را به سطر وارد شده می کند.

boolean

next()
مکان نما را به سطر زیر سطر جاری منتقل می کند.

boolean

previous()
مکان نما را به سطر قبلی در شی Resultset منتقل می کند.




 



مقالات مرتبط
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.