منبع:راسخون
اینترفیس 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
به عنوان مثال می خواهیم تعداد سطر های یک 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();
int rowcount= rs.getRow();
System.out.println("count of student table row's: "+rowcount );
کدهای زیر را در ادامه ( قبل از بسته شدن 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")
);
متد ها |
|
boolean |
absolute(int row) |
void |
afterLast() مکان نما را به انتهای شی ResultSet ، درست بعد از آخرین سطر منتقل می کند. |
void |
beforeFirst() مکان نما را به ابتدای شی ResultSet ، درست قبل از اولین سطر منتقل می کند. |
void |
cancelRowUpdates() قابلیت آپدیت سطر جاری در شی ResultSet را لغو می کند. |
void |
clearWarnings() همه ی گزارشات هشدار را در شی ResultSet را پاک می کند. |
void |
شی ResultSet دیتابیس و منابع JDBC را فورا آزاد می سازد، بجای اینکه صبر کند تا زمانیکه به طور اتوماتیک بسته شود. |
void |
deleteRow() |
int |
findColumn(String columnName) نام ستون Resultset گرفته شده را به ایندکس(شاخص) گرفته شده نگاشت می کند. |
boolean |
first() |
Array |
getArray(int i) مقدار ستون معین را در سطر جاری شی Resultset به عنوان یک شی آرایه در زبان برنامه نویسی جاوا را بازیابی می کند. |
Array |
getArray(String colName) مقدار ستون معین را در سطر جاری شی Resultset به عنوان یک شی آرایه در زبان برنامه نویسی جاوا را بازیابی می کند. |
InputStream |
getAsciiStream(int columnIndex) مقدار ستون معین (که شماره ی آن آمده) را در سطر جاری از شی Resultset را در قالب رشته ای از کاراکترهای اسکی بازیابی می کند. |
InputStream |
getAsciiStream(String columnName) مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب رشته ای از کاراکترهای اسکی بازیابی می کند |
BigDecimal |
getBigDecimal(int columnIndex) |
BigDecimal |
getBigDecimal(int columnIndex, int scale) |
BigDecimal |
getBigDecimal(String columnName) |
BigDecimal |
getBigDecimal(String columnName, int scale) |
InputStream |
getBinaryStream(int columnIndex) مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک رشته باینری از بایتهای تفسیر نشده بازیابی می کند. |
InputStream |
getBinaryStream(String columnName) |
boolean |
getBoolean(int columnIndex) مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک بولین در زبان برنامه نویسی جاوا بازیابی می کند. |
boolean |
getBoolean(String columnName) مقدار ستون معین(که نام آن آمده) را در سطر جاری از شی Resultset را در قالب یک بولین در زبان برنامه نویسی جاوا بازیابی می کند. |
byte |
getByte(int columnIndex) |
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 |
|
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) |
URL |
getURL(String columnName) مقدار ستون معین در سطر جاری از شی ResultSet به عنوان یک شی java.net.URL در زبان برنامه نویسی بازیابی می کند. |
SQLWarning |
getWarnings() |
boolean |
rowDeleted() |
boolean |
rowInserted() بازیابی می کند که آیا چیزی به سطر جاری اضافه شده یا خیر. |
boolean |
rowUpdated() |
boolean |
wasNull() |
void |
insertRow() |
boolean |
isAfterLast() |
boolean |
isBeforeFirst() تعیین می کند که آیا مکان نما قبل از اولین سطر در شی Resultset قرار دارد. |
boolean |
isFirst() تعیین می کند که آیا مکان نما روی اولین سطر در شی Resultset قرار دارد. |
boolean |
isLast() تعیین می کند که آیا مکان نما روی آخرین سطر در شی Resultset قرار دارد. |
boolean |
last() |
void |
moveToInsertRow() |
boolean |
next() |
boolean |
previous() |
/ج