Kwert-soft.ru

IT Софт для ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java sql resultset

Java sql resultset

A ResultSet object maintains a cursor pointing to its current row of data. Initially the cursor is positioned before the first row. The next method moves the cursor to the next row, and because it returns false when there are no more rows in the ResultSet object, it can be used in a while loop to iterate through the result set.

A default ResultSet object is not updatable and has a cursor that moves forward only. Thus, you can iterate through it only once and only from the first row to the last row. It is possible to produce ResultSet objects that are scrollable and/or updatable. The following code fragment, in which con is a valid Connection object, illustrates how to make a result set that is scrollable and insensitive to updates by others, and that is updatable. See ResultSet fields for other options. The ResultSet interface provides getter methods ( getBoolean , getLong , and so on) for retrieving column values from the current row. Values can be retrieved using either the index number of the column or the name of the column. In general, using the column index will be more efficient. Columns are numbered from 1. For maximum portability, result set columns within each row should be read in left-to-right order, and each column should be read only once.

For the getter methods, a JDBC driver attempts to convert the underlying data to the Java type specified in the getter method and returns a suitable Java value. The JDBC specification has a table showing the allowable mappings from SQL types to Java types that can be used by the ResultSet getter methods.

Column names used as input to getter methods are case insensitive. When a getter method is called with a column name and several columns have the same name, the value of the first matching column will be returned. The column name option is designed to be used when column names are used in the SQL query that generated the result set. For columns that are NOT explicitly named in the query, it is best to use column numbers. If column names are used, the programmer should take care to guarantee that they uniquely refer to the intended columns, which can be assured with the SQL AS clause.

A set of updater methods were added to this interface in the JDBC 2.0 API (Java TM 2 SDK, Standard Edition, version 1.2). The comments regarding parameters to the getter methods also apply to parameters to the updater methods.

The updater methods may be used in two ways:

  1. to update a column value in the current row. In a scrollable ResultSet object, the cursor can be moved backwards and forwards, to an absolute position, or to a position relative to the current row. The following code fragment updates the NAME column in the fifth row of the ResultSet object rs and then uses the method updateRow to update the data source table from which rs was derived.
  2. to insert column values into the insert row. An updatable ResultSet object has a special row associated with it that serves as a staging area for building a row to be inserted. The following code fragment moves the cursor to the insert row, builds a three-column row, and inserts it into rs and into the data source table using the method insertRow .

A ResultSet object is automatically closed when the Statement object that generated it is closed, re-executed, or used to retrieve the next result from a sequence of multiple results.

Java JDBC ResultSet Example

Posted by: Ilias Koutsakis in ResultSet June 30th, 2014 0 Views

With this example we are going to demonstrate how to use ResultSet in order to get and manipulate data from a database. ResultSet is essentially a table, which contains all the information that should be returned from a specific query, as well as some essential metadata.

For the purposes of this article, we are going to assume that the database in use is MySQL, since it is one of the most well-known and beginner friendly databases out there. In general, we are using:

1. Creating a new project and adding the driver to the build path

First of all download the JDBC driver needed for your database. In our case, you will need the MySQL Connector, which can be found and downloaded here. Select the Platform Independent option, and download the zip file which contains, among others, the MySQL Connector jar file which will be added in the build path. Right now, the official version which will be downloaded will contain the mysql-connector-java-5.1.31-bin file (which is the file that should be added to the project).

The page that you should see, when you try to download MySQL Connector.

Читать еще:  Java високосный год

Afterwards, you need to create a new Eclipse project and add the connector to the build path, by right-clicking on the project -> Build Path -> Add External Archives, as shown in the image below:

The path you should follow to add the jar, as instructed above.

After that, you can see that the jar is added in the build path under the Referenced Libraries section, in the project structure.

2. ResultSet Example

There are certain steps to be taken in order to use ResultSet in Java:

  1. Load the MySQL driver to your program.
  2. Create a Connection to the database.
  3. Make a query using a Statement .
  4. Get the ResultSet and manipulate the data as needed.

For this example we assume that we have a local database running, named “albums“, which contains a table named “the_classics”. The table contains the following:

nameartistyear
The Black AlbumMetallica1991
The White AlbumThe Beatles1968
Rock in RioIron Maiden2001

Let’s get to the code then!

Output:

As stated above, the ResultSet class has different methods for acquiring different kinds of data, depending on the column type in the table. It is very important to know what kind of data you want to retrieve, because in case of a mismatch, an exception will be thrown. For example, in the above code, if we change this line:

we will immediately get an exception when we try to retrieve the first result.

Generally, you need to be sure about the data types and use the right method. Some of the most common MySQL – Java relations are these:

  • Varchar -> getString(columnName) : String
  • Char -> getString(columnName) : String
  • Integer -> getInt(columnName) : int
  • Float -> getFloat(columnName) : float
  • Boolean -> getBoolean(columnName) : boolean
  • Date -> getDate(columnType) : Date

In some cases, you can use the getString(columnName) method to get the String representation of numbers, like Integer or Float, but this course of action is better to be avoided.

3. Download the source code

This was an example of how to use ResultSet in Java.
You can download the eclipse project of this tutorial here: ResultSetExample.

Руководство по JDBC. Result Set.

В прошлом уроке мы рассмотрели понятие Statements и их виды. Мы узнали, что в результате SQL – запроса мы получаем данные.

Данные, полученные в результате SQL – запроса возвращаются в виде множетсва результатов, которые хранятся в сущности под названием Result Set.

Стандартный способ получить записи из нашей базе данных (далее – БД) – это применение ключевого слова SELECT. Стандартный способ просмотреть эти данные – это использовать Result set.

Интерфейс java.sql.ResultSet представляет собой множетсво результатов, запроса в БД.

Экземпляр ResultSet имеет указатель, который указывает на текущую строку в полученном множестве.

Все методы интерфейса java.sql.ResultSet мы можем разделить на три большие группы:

  • Методы получения данных.
    Эти методы используются для просмотра данных конкетной записи, на которую ссылается указатель.
  • Методы изменения данных.
    Методы этой группы используются для изменения данных текущей записи. Эти изменения передаются в используемую БД.
  • Методы навигации.
    Эти методы используются для перемещения указателя.

Курсор двигается на основе свойств ResultSet. Эти свойства указываются при создании экземпляра ResultSet.

Для орпедления этих свойтсв используются следующие методы:

  • createStatement (int RSType, int RSConcurrency);
  • prepareStatement (String SQL, int RSType, int RSConcurrency);
  • prepareCall (String SQL, int RSType, int RSConcurrency);

Аргумент RSType определяет тип ResultSet, а второй – определяет, используется ли данный экземпляр ResultSet только для чтения, или для чтения и изменения также.

Типы ResultSet

Возможные типы ResultSet приведены ниже. Тип TYPE_FORWARD_ONLY используется по умолчанию.

Рассмотрим эти типы:

  • ResultSet.TYPE-FORWARD_ONLY
    Указатель двигается только вперёд по множеству полученных результатов.
    .
  • ResultSet.TYPE_SCROLL_INTENSIVE
    Указатель может двигаться вперёд и назад и не чуствителен к изменениям в БД, которые сделаны другими пользователями после того, как ResultSet был создан.
  • ResultSet.TYPE_SCROLL_SENSITIVE
    Указатель может двигаться вперёд и назад и чувствителен к изменениям в БД, которые сделаны другими пользователями после того, как ResultSet был создан.

Доступ ResultSet

По умолчанию RSConcurrency экземпляра ResultSet установлен тип CONCUR_READ_ONLY, т.е. только для чтения.

Всего существует два типа этого параметра:

  • ResultSet.CONCUR_READ_ONLY
    Создаёт экземпляр ResultSet только для чтения. Устанавливается по умолчанию.
  • ResultSet.CONCUR_UPDATABLE
    Создаёт экземпляр ResultSet, который может изменять данные.

В виде кода, создание экземпляра ResultSet с необходимыми нам параметрами выглядит, примерно так:

Навигация по ResultSet

В интерфейсе java.sql.ResultSet существует несколько методов для перемещения указателя.

Некоторые из них приведены ниже:

  • public void beforeFirst () throws SQLException
    Перемещает указатель на место перед первым рядом.
  • public void afterLast () throws SQLException
    Перемещает указатель на место после крайнего ряда.
  • public boolean first () throws SQLException
    Перемещает указатель на первый ряд.
  • public boolean last () throws SQLException
    Перемещает указатель на крайний ряд.
  • public boolean previous () throws SQLException
    Перемещает указатель на предыдущий ряд. Возвращает false, если предыдущий ряд находится за пределами множества результатов.
  • public boolean next () throws SQLException
    Перемещает указатель на следующий ряд. Возвращает false, если следующий ряд находится за пределами множества результатов.
  • public void absolute (int row) throws SQLException
    Перемещает указатель на указанный ряд.
  • public void relative (int row) throws SQLException
    Перемещает указатель на указанное количество рядов от текущего
  • public int getRow () throws SQLException
    Возвращает номер ряда, на который в данный момент указывает курсор.
  • public void moveToInsertRow () throws SQLException
    Перемещает указатель на ряд в полученном множестве, который может быть использован для того, чтобы добавить новую запись в БД. Текущее положение указателя запоминается.
  • public void moveToCurrentRow () throws SQLExcpetion
    Возвращает указатель обратно на текущий ряд в случае, если указатель ссылается на ряд, в который в данный момент добавляются данные.
Читать еще:  Javascript get set

Для понимания того, как это работает на практике, рассмотрим пример простого приложения.

В результате работы программы мы получим, следующий результат:

Просмотр результатов ResultSet

Для получения и редактирования данных, в интерфейса ResultSet существует множество методов.

Мы можем получить данные, как по имени, так и индексу:

  • public int getInt (int columnIndex) throws SQLException
    Возвращает номер текущего ряда с указанным индексом колонки. Индексы начинаются с 1. Т.е. первая – 1, вторая – 2 и т.д.
  • public int getInt (String columnName) throws SQLException
    Возвращает целое число в текущем ряду с колонкой с именем, переданном в параметре columnName.

Существуют также методы для получения определённых типов данных SQL (java.sql.Time, java.sql.Date и т.д.).

Для понимания того, как это работает на практике, рассмотрим следующий пример.

В результате работы программы мы получим следующий результат:

Редактирование данных ResultSet

Для редактирования данных, в интерфейсе java.sql.ResultSet, также разработано множество методов.

Мы можем изменять данные, как по имени, так и по индексу колонки:

  • public void updateString (int columnIndex, String s) throws SQLException
    Изменяет строку в указанной колонке.
  • public void updateString (String columnName, String s) throws SQLException
    Изменяет строку в колонке с указанным именем.

Мы также можем работать с рядами в таблице БД:

  • public void insertRow()
    Вставляет запись в таблицу БД. Может быть использован только в том случае, когда указатель ссылается на ряд для вставки.
  • public void updateRow()
    Изменяет текущий ряд в таблице БД.
  • public void deleteRow()
    Удаляет текущий ряд из таблицы БД.

Для понимания того, как это работает на практике, рассмотрим такой пример.

В результате работы программы мы получим следующий результат:

В этом уроке мы изучили такой важный элемент, как ResultSet, его методы, применение и рассмотрели примеры приложений с его использованием.

В следующем уроке мы изучим типы данных JDBC.

JDBC — Result Sets

The SQL statements that read data from a database query, return the data in a result set. The SELECT statement is the standard way to select rows from a database and view them in a result set. The java.sql.ResultSet interface represents the result set of a database query.

A ResultSet object maintains a cursor that points to the current row in the result set. The term «result set» refers to the row and column data contained in a ResultSet object.

The methods of the ResultSet interface can be broken down into three categories −

Navigational methods: Used to move the cursor around.

Get methods: Used to view the data in the columns of the current row being pointed by the cursor.

Update methods: Used to update the data in the columns of the current row. The updates can then be updated in the underlying database as well.

The cursor is movable based on the properties of the ResultSet. These properties are designated when the corresponding Statement that generates the ResultSet is created.

JDBC provides the following connection methods to create statements with desired ResultSet −

createStatement(int RSType, int RSConcurrency);

prepareStatement(String SQL, int RSType, int RSConcurrency);

prepareCall(String sql, int RSType, int RSConcurrency);

The first argument indicates the type of a ResultSet object and the second argument is one of two ResultSet constants for specifying whether a result set is read-only or updatable.

Type of ResultSet

The possible RSType are given below. If you do not specify any ResultSet type, you will automatically get one that is TYPE_FORWARD_ONLY.

TypeDescription
ResultSet.TYPE_FORWARD_ONLYThe cursor can only move forward in the result set.
ResultSet.TYPE_SCROLL_INSENSITIVEThe cursor can scroll forward and backward, and the result set is not sensitive to changes made by others to the database that occur after the result set was created.
ResultSet.TYPE_SCROLL_SENSITIVE.The cursor can scroll forward and backward, and the result set is sensitive to changes made by others to the database that occur after the result set was created.

Concurrency of ResultSet

The possible RSConcurrency are given below. If you do not specify any Concurrency type, you will automatically get one that is CONCUR_READ_ONLY.

ConcurrencyDescription
ResultSet.CONCUR_READ_ONLYCreates a read-only result set. This is the default
ResultSet.CONCUR_UPDATABLECreates an updateable result set.

All our examples written so far can be written as follows, which initializes a Statement object to create a forward-only, read only ResultSet object −

Читать еще:  Java inputstream read

Navigating a Result Set

There are several methods in the ResultSet interface that involve moving the cursor, including −

S.N.Methods & Description
1public void beforeFirst() throws SQLException

Moves the cursor just before the first row.

2public void afterLast() throws SQLException

Moves the cursor just after the last row.

3public boolean first() throws SQLException

Moves the cursor to the first row.

4public void last() throws SQLException

Moves the cursor to the last row.

5public boolean absolute(int row) throws SQLException

Moves the cursor to the specified row.

6public boolean relative(int row) throws SQLException

Moves the cursor the given number of rows forward or backward, from where it is currently pointing.

7public boolean previous() throws SQLException

Moves the cursor to the previous row. This method returns false if the previous row is off the result set.

8public boolean next() throws SQLException

Moves the cursor to the next row. This method returns false if there are no more rows in the result set.

9public int getRow() throws SQLException

Returns the row number that the cursor is pointing to.

10public void moveToInsertRow() throws SQLException

Moves the cursor to a special row in the result set that can be used to insert a new row into the database. The current cursor location is remembered.

11public void moveToCurrentRow() throws SQLException

Moves the cursor back to the current row if the cursor is currently at the insert row; otherwise, this method does nothing

For a better understanding, let us study Navigate — Example Code.

Viewing a Result Set

The ResultSet interface contains dozens of methods for getting the data of the current row.

There is a get method for each of the possible data types, and each get method has two versions −

One that takes in a column name.

One that takes in a column index.

For example, if the column you are interested in viewing contains an int, you need to use one of the getInt() methods of ResultSet −

S.N.Methods & Description
1public int getInt(String columnName) throws SQLException

Returns the int in the current row in the column named columnName.

2public int getInt(int columnIndex) throws SQLException

Returns the int in the current row in the specified column index. The column index starts at 1, meaning the first column of a row is 1, the second column of a row is 2, and so on.

Similarly, there are get methods in the ResultSet interface for each of the eight Java primitive types, as well as common types such as java.lang.String, java.lang.Object, and java.net.URL.

There are also methods for getting SQL data types java.sql.Date, java.sql.Time, java.sql.TimeStamp, java.sql.Clob, and java.sql.Blob. Check the documentation for more information about using these SQL data types.

For a better understanding, let us study Viewing — Example Code.

Updating a Result Set

The ResultSet interface contains a collection of update methods for updating the data of a result set.

As with the get methods, there are two update methods for each data type −

One that takes in a column name.

One that takes in a column index.

For example, to update a String column of the current row of a result set, you would use one of the following updateString() methods −

S.N.Methods & Description
1public void updateString(int columnIndex, String s) throws SQLException

Changes the String in the specified column to the value of s.

2public void updateString(String columnName, String s) throws SQLException

Similar to the previous method, except that the column is specified by its name instead of its index.

There are update methods for the eight primitive data types, as well as String, Object, URL, and the SQL data types in the java.sql package.

Updating a row in the result set changes the columns of the current row in the ResultSet object, but not in the underlying database. To update your changes to the row in the database, you need to invoke one of the following methods.

S.N.Methods & Description
1public void updateRow()

Updates the current row by updating the corresponding row in the database.

2public void deleteRow()

Deletes the current row from the database

3public void refreshRow()

Refreshes the data in the result set to reflect any recent changes in the database.

4public void cancelRowUpdates()

Cancels any updates made on the current row.

5public void insertRow()

Inserts a row into the database. This method can only be invoked when the cursor is pointing to the insert row.

For a better understanding, let us study the Updating — Example Code .

Ссылка на основную публикацию
Adblock
detector