Получение результатов: класс ResultSet
Объект ResultSet, представляющий набор результатов, фактически является табличным набором данных, т.е. состоит из рядов данных, организованных в унифицированные столбцы. Программа на языке Java, использующая JDBC, единовременно способна выдать только один ряд данных. Чтобы перейти к следующему ряду, она должна вызвать метод next(). JDBC не предоставляет метод для обратного движения по ResultSet или запоминания рядов ("закладки" в ODBC). Получив ряд, программа может пользоваться позиционным указателем (1 - для первого столбца, 2 - для второго и т.д.) или названием столбца и получить значение поля, вызвав метод getXXXX (getInt, getByte, getString и т.д.) в соответствии с типом возвращаемых данных.
Class.forName(
"com.ms.jdbc.odbc.JdbcOdbcDriver");
// при создании соединения указывается
// DSN источника данных (mystud),
// имя пользователя (user1), его пароль(123)
Connection myCon=DriverManager.getConnection
("jdbc:odbc:mystud","user1","123");
Statement mySt=myCon.createStatement();
ResultSet rs=mySt.executeQuery(
"SELECT название, тип, цена FROM товар");
while (rs.next()) {
String var1=rs.getString(1);
String var2=rs.getString(2);
int var3=rs.getInt(3);
// значения переменных var1, var2, var3 могут
// далее быть использованы в элементах
// пользовательского графического интерфейса
}
Создание оператора: класс PreparedStatement
В случае использования этого объекта программа подготавливает SQL-оператор при помощи метода prepareStatement (String sql) объекта Connection: берется SQL-строка и передается СУБД. Строка проходит через стадии синтаксического анализа, оптимизации и генерирования плана выполнения, но не выполняет оператор SQL. Ссылка на план выполнения возвращается JDBC, который сохраняет ее в объекте PreparedStatement.
Одно из важных свойств метода prepareStatement - возможность обработки входных параметров. Они помечаются в операторе SQL символом "?" на месте фактического значения. В программе Java проводится соответствие между параметрами и методами setXXXX() - setInt, setFloat, setString и т.д., в соответствии с типами входных параметров. Все методы setXXXX() принимают в качестве параметров значение параметра и указатель parameterIndex, который равен 1 для первого "?", 2 - для второго и т.д. Выполнение sql-оператора обеспечивается методами объекта PreparedStatement:
executeQuery() - для выполнения запроса выборки SELECT;
execute() - для выполнения запроса, возвращающего множественные наборы данных;
executeUpdate() - для выполнения запроса модификации данных INSERT, UPDATE или DELETE.
Объект PreparedStatement обеспечивает более быстрое выполнение оператора SQL и является примером реализации динамического SQL.
Class.forName(
"com.ms.jdbc.odbc.JdbcOdbcDriver");
Connection myCon=DriverManager.getConnection
("jdbc:odbc:mystud","user1","123");
PreparedStatement mySt=myCon.prepareStatement
("INSERT товар(название, тип, цена)
VALUES(?,?,?)");
mySt.setString(1, "Трюфели");
mySt.setString(2, "Конфеты");
mySt.setInt(3,156);
int res=mySt.executeUpdate();
Do'stlaringiz bilan baham: |