БЕЛОРУССКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
кафедра информационных технологий и
автоматизированных систем
РЕФЕРАТ
на тему:
«Работа с базами данных в JAVA на основе соединения JDBC»
Минск, 2008
Как мы знаем, SQL-запросы предварительно
компилируются по месту исполнения. Следовательно, чтобы ускорить их выполнение
следует компиляцию запросов выполнять предварительно. Это реализуется командой prepareStatement класса PreparedStatement. Данная команда
позволяется использовать SQL-запросы с параметрами. Параметры вставляются в
запросы как знак вопроса. Сначала рассмотрим, как использовать инструкцию prepareStatement на следующем примере:
try{
Connection db=DriverManager.getConnection(url);
String
sq_str="SELECT * FROM stud"; //Строка запроса на выборку
PreparedStatement
prst= db.prepareStatement(sq_str);
ResultSet rs= prst.executeQuery(); //Переменная rs получает набор выбранных
записей
while(rs.next()){ //Выполняем просмотр записей набора
String s=rs.getString("name")+
" "+ rs.getInt("groupp");
//Получаем содержимое полей name и
// groupp текущей записи
System.out.println("my-"+s);}//выводим запись на экран
System.out.println("OK");
// db.close(); //Закрываем БД.
}
catch(Exception er)
{System.out.println("Error
has arised here:"+er);}
}
Инструкция на выборку создается в строке
PreparedStatement prst=
db.prepareStatement(sq_str);
Скомпилированный заапрос выполняется обычным
образом:
ResultSet rs= prst.executeQuery()
Теперь предположим, что мы хотим выполнить выборку студентов,
чей возраст превосходит 19 лет. В этой связи нам надлежит ввести в запрос
параметр. Делается это таким образом:
try{
Connection
db=DriverManager.getConnection(url);
String sq_str="SELECT *
FROM stud where age> ?"; //Строка запроса на //выборку с параметром
PreparedStatement prst=
db.prepareStatement(sq_str);
prst.setInt(1,23); //установка значения параметра
ResultSet rs= prst.executeQuery(); //Переменная rs получает набор выбранных записей
while(rs.next()){ //Выполняем просмотр записей набора
String s=rs.getString("name")+ " "+
rs.getInt("groupp");
//Получаем содержимое полей name и
// groupp
текущей записи
System.out.println("my-"+s);}//выводим запись на экран
System.out.println("OK");
// db.close(); //Закрываем БД.
}
catch(Exception er)
{System.out.println("Error
has arised here:"+er);}
}
}
Сначала создается запрос на выборку:
String
sq_str="SELECT
* FROM stud where age> ?"; //Строка запроса на //выборку с
параметром
В этом запросе место параметра отмечено знаком вопроса.
Установка значения параметра реализуется следующим образом:
prst.setInt(1,23);
Параметрами метода setInt являются:
номер вставляемого параметра (в нашем примере – 1) и значение вставляемого
параметра (23) для поля age.
Текстовые значения вставляются с помощью метода setString.
Обратимся к вызову хранимых процедур.
В отличие от запросов с параметрами здесь используют класс CallableStatement. Таким образом, запрос на вызов
хранимой процедуры может иметь такой вид:
CallableStatement cs =
db.prepareStatement(“call proc1(?,?)”);
cs.setSting(1,”hello”);
cs.setInt(2,10);
В создаваемом запросе указывается имя вызываемой процедуры proc1 и обозначаются позиции для
параметров знаком ?. Установка значений параметров производится уже знакомым
нам образом. Теперь для иллюстрации приведем код приложения, которое
соединяется с сервером SQL Server 2000 и
вызывает хранимую процедуру на сервере. Эта процедура имеет следующий вид.
CREATE PROCEDURE [dbo].proc1
@s varchar(16) OUTPUT
AS
Begin
SELECT @s="Hello From SQL
Server"
END
RETURN 0
GO
В этой процедуре имеется выходной параметр типа varchar. В теле процедуры он получает
значение текстовой строки "Hello From SQL Server". Таким образом, наша задача состоит в том,
чтобы правильно соединиться с сервером SQL Server, создать в приложении вызов процедуры на сервере и
установить выходной параметр. Этот параметр мы должны будем прочитать. Приведем
текст готового приложения и дадим к нему пояснения.
import java.awt.*;
import java.*;
import java.sql.*;
import java.io.*;
public class lab6
{
public static void main(String
args[])
{
String
url="jdbc:odbc:sqlsource2";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(Exception e)
{System.out.println("Classdefnotfound"+e);
}
try{
Connection
db=DriverManager.getConnection(url);
CallableStatement cst=
db.prepareCall("{call proc1(?)}");
cst.registerOutParameter(1,
Types.VARCHAR,16);
cst.execute();
String str=cst.getString(1);
System.out.println(str);// выводим ответ процедуры на экран
System.out.println("OK");
db.close(); //Закрываем соединение.
}
catch(Exception er)
{System.out.println("Error
has arised here:"+er);}
}
}
Вызов хранимой процедуры выполняется посредством класса
CallableStatement. Инструкция по вызову процедуры
предварительно подготавливается в команде:
CallableStatement cst= db.prepareCall("{call proc1(?)}");
Знак вопроса в скобках определяет место для параметра. В
нашем примере используется один выходной параметр. Каждый выходной параметр
должен быть зарегистрирован. Это выполняет команда:
cst.registerOutParameter(1, Types.VARCHAR,16);
Первый операнд данной команды определяет номер параметра
(нумерация начинается с 1). Второй операнд соответствует типу параметра (VARCHAR), третий операнд устанавливает
размер параметра. Типы параметров прописываются в пакете java.sql.*. Другие типы параметров приведены в таблице 1, где
указано таккже их соответствие типам Java.
Таблица 1
JDBC -тип
|
Java - тип
|
CHAR
|
String
|
VARCHAR
|
String
|
LONGVARCHAR
|
String
|
NUMERIC
|
java.math.BigDecimal
|
DECIMAL
|
java.math.BigDecimal
|
BIT
|
boolean
|
TINYINT
|
byte
|
SMALLINT
|
short
|
INTEGER
|
int
|
BIGINT
|
long
|
REAL
|
float
|
FLOAT
|
double
|
DOUBLE
|
double
|
BINARY
|
byte[]
|
VARBINARY
|
byte[]
|
LONGVARBINARY
|
byte[]
|
DATE
|
java.sql.Date
|
TIME
|
java.sql.Time
|
TIMESTAMP
|
java.sql.Timestamp
|
Выполнение процедуры реализуется командой
cst.execute();
Для получения значения, возвращаемого процедурой или функций
следует использовать такой синтаксис определения вызова:
{? = call procedure_name[(?, ?, ...)]}
При передаче входных параметров в хранимую процедуру их
следует предварительно установить. Это делается с помощью метода setXXX.
Рассмотрим следующую хранимую процедуру.
CREATE PROCEDURE [dbo].proc2 @nomer int , @name
char(30) OUTPUT, @group int OUTPUT
AS
BEGIN
DECLARE @mycur CURSOR
SET @mycur=CURSOR SCROLL STATIC FOR
SELECT * from we
Open @mycur
IF (@@CURSOR_ROWS<@nomer)
BEGIN
SET @name="#"
SET @group=-1
RETURN 1
END
ELSE
BEGIN
FETCH ABSOLUTE @nomer FROM @mycur INTO @name,@group
RETURN 0
END
END
GO
Заголовок этой процедуры имеет такой вид:
CREATE PROCEDURE [dbo].proc2 @nomer int , @name
char(30) OUTPUT, @group int OUTPUT
Из него видно, что процедура получает один входной параметр –
nomer (номер записи) и возвращает два
выходных параметра – name
(имя) и group (группу).
Теперь приведем текст java-приложения, которое вызывает данную хранимую
процедуру.
import java.awt.*;
import java.*;
import java.sql.*;
import java.io.*;
public class lab6
{
public static void main(String args[])
{
String url="jdbc:odbc:sqlsource2";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(Exception e)
{System.out.println("Classdefnotfound"+e);
}
try{
Connection db=DriverManager.getConnection(url);
CallableStatement cst=
db.prepareCall("{call proc2(?,?,?)}");
cst.setInt(1,1);
cst.registerOutParameter(2, Types.VARCHAR,16);
cst.registerOutParameter(3, Types.INTEGER);
cst.execute();
String str=cst.getString(2)+"
=="+cst.getInt(3);
System.out.println(str);// выводим ответ процедуры на экран
System.out.println("OK");
db.close(); //Закрываем соединение.
}
catch(Exception er)
{System.out.println("Error has arised
here:"+er);}
}
}
Обратим внимание на установку единственного входного
параметра:
cst.setInt(1,1);
Первый операнд этой команды задает номер параметра, второй –
его значение. Получение значений возвращаемых процедурой, выполняется командой
String str=cst.getString(2)+" =="+cst.getInt(3);
Здесь формируется строка, состоящая
из двух выходных параметров, получаемых с помощью метода getXXX(n) , где n –
номер параметра.
В заключение отметим, что
параметры могут иметь тип INOUT,
т.е. быть одновременно входными и выходными. Параметр такого типа перед вызовом
процедуры должен получить значение и быть зарегистрированным.
ЛИТЕРАТУРА
1.
Меградж З.
Разработка приложений для электронной коммерции на ORACLE и JAVA.
Вильямс, 2000, 328с.
2.
Пирогов В.П. MS SQL Server 2000. Управление и программирование. – СПб.
БХВ.-2005,-600с.
3.
Холл М., Браун Л.
Программирование для WEB.
Вильямс, 2002, - 1280с.
Другие работы по теме:
Содержание
Дисциплина «Информационные технологии» изучается на 6 курсе для заочной формы обучения и предназначена для освоения студентами основных информационных технологий уровня предприятия
“ Поддержка xml. Краткий обзор Oracle xdk”
Данные синтаксические анализаторы поддерживают dom (Document Object Model) и sax (Simple api for xml) интерфейсы, xml namespaces, режимы проверки структуры xml файла и xsl преобразования. Они реализованы на всех платформах Oracle
Архитектуры реализации корпоративных информационных систем
Преимущества и недостатки использования двух типов базовых архитектур Клиент-сервер и Интернет/Интранет, их компоненты и экономическая целесообразность. Информационные взаимосвязи компонентов WEB-узла, взаимодействие браузера, сервера и сценария CGI.
Лисков, Барбара
Введение 1 Биография 2 Награды 3 Библиография Список литературы Введение Барбара Лисков (англ. Barbara Liskov, род. Барбара Джейн Хьюберман — Barbara Jane Huberman; род. 7 ноября 1939) — учёная в области теории вычислительных систем, лауреат премии Тьюринга 2008 года.
Архитектура и интерфейсы Java
Платформа Java. Средства разработки на Java. Средства для локализации приложений. Набор Java-библиотек и базовых классов.
Языки серверных скриптов
В последнее время Web-узлы перестают быть просто набором страниц и картинок. Все чаще создаются узлы, которые взаимодействуют с посетителем, выполняют какие-то действия, собирают данные, ведут подсчеты, самонастраиваются под предпочтения посетителя.
Java99: Архитектура и интерфейсы
Java: архитектура и интерфейсы Многим наверняка уже известно, что язык Java был разработан фирмой Sun, как платформенно-независимый, переносимый, объектно-ориентированный язык для Internet и Intranet. Я не вижу особого смысла перечислять преимущества языка, его отличия от C++ - это уже описано в десятках книг и сотнях публикаций, как за рубежом, так и в нашей стране.
Что такое РНР
Personal Home Page Tools - персональные инструменты для домашней странички. язык написания сценариев, внедренный в HTML. Синтаксис.
Разработка приложения на Java
Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.
Объекты базы данных
База данных это совокупность данных которые обладает свойствами структурированности и взаимно связанности, а также не зависимости от прикладных программ. Чтобы оперировать данными составляющие базу необходимо от дельная программа системами управления базами данных – это управляющая программа предназначенная для хранение, поиска и обработки данных в базе.
Выбор и обоснование языка программирования
Java — объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный 23 мая 1995 года. Изначально новый язык программирования назывался Oak (James Gosling) и разрабатывался для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания апплетов, приложений и серверного программного обеспечения
Огляд технології сервлетів
Міністерство освіти і науки України Чернівецький національний університет імені Юрія Федьковича Факультет комп’ютерних наук Кафедра комп’ютерних систем та мереж
Технология ISAPI
Интерфейс Internet Server Application Program Interface (ISAPI) предназначен для программирования приложения (API) информационных служб интернета (IIS). ISAPI состоит из классов поддержки и структур, участвующих в программной эксплуатации IIS. Веб-приложения, использующие ISAPI для взаимодействия с IIS, реализуют это взаимодействие на веб-сервере Windows наиболее эффективным образом.
Работа с базами данных
Факультет «Информатика и системы управления» Методические указания к лабораторной работе по курсу «Распределенные системы обработки информации»
The Microsoft Antitrust Case Essay Research Paper
The Microsoft Antitrust Case The case against Microsoft was brought buy the U.S. Department of Justice, as well as several state Attorneys General. Microsoft is accused of using and maintaining monopoly power to gain an unfair advantage in the market. The case has been under observation for a long time, but the Justice department is having trouble coming up with substantial evidence against Microsoft.
For Some Odd And Strange Reason Essay
, Research Paper 1/29/01 For Some Odd & Strange Reason It was a cold and blistering December morning on the campus of SUNY Brockport. Waking up and going to class on these dreadful mornings are a students worst nightmare. But for some odd and strange reason, something possessed me to get up early and retrieve a hot cup of java from the college coffee shop, Jitterbugs.
Indonesia Essay Research Paper IndonesiaThis report will
Indonesia Essay, Research Paper Indonesia This report will be on the History in Brief of Indonesia, the Government of Indonesia, the island of Java, and the Geography of Indonesia. In early days, the region from India to Japan, including Indonesia, was known to the Europeans as the Indies. Chris Columbus was looking for a westward sea root from Europe to the Indies, when he arrived in America.
Programming Languaguages Essay Research Paper Programming LanguagesA
Programming Languaguages Essay, Research Paper Programming Languages A programming language is a set of English-like instructions that includes a set of rules for putting the instructions together to create commands. A translator changes the English-like commands into numeric code that the computer can understand.
Web Application Servers Essay Research Paper Web
Web Application Servers Essay, Research Paper Web App Servers A new breed application platforms known as web app servers, for internet based applications, has been born. These new application development environments provide the means for internet pages to contain and transfer information to and from the client’s browser.
Java Essay Research Paper Java is the
Java Essay, Research Paper Java is the substance whose aroma is awakening the Internet community. It is a new programming language developed by Sun Microsystems that has
Java Essay Research Paper Final Term PaperThe
Java Essay, Research Paper Final Term Paper The Java Revolution Java s new-age design is leading the object-oriented programming language design revolution; allowing even greater portability, state of the art security measures, and more extensive reusability. First, a brief description of what makes a programming language object-oriented so that its importance can be realized.
Java Verses C Essay Research Paper Java
Java Verses C++ Essay, Research Paper Java vs. C++Since their inception, computers have played an increasingly important role in today s society. Advancements in technology have enabled computers to become faster and cheaper. Today, the majority of families own a home computer that is vastly more powerful than giant mainframes of years gone by.
Microsoft Antitrust Editorial Essay Research Paper Microsoft
Microsoft Antitrust Editorial Essay, Research Paper Microsoft: The Big Bully Stealing Your Lunch Money A monopoly, by definition, is a business or group that engages in unfair and often unethical business practices to control an industry and eliminate all competition that might lessen their profits.
Is Cobol Dead Essay Research Paper There
Is Cobol Dead Essay, Research Paper There is common question being asked by many in the programming world. That question is ?Is COBOL dead?? In spite of the years of criticism and all the predictions that some new language will soon replace COBOL, COBOL continues as a language of business data processing.
Is Cobol Dead Essay Research Paper Is
Is Cobol Dead Essay, Research Paper Is COBOL dead? To be completely honest, I originally had no idea. I knew that I took it as programming class last semester, but I didn’t know how it applied to the business world. Nor, had it ever crossed my mind in the 3+ months that I used it. The fact that you asked the question made me wonder myself, so I had to do some reading.
Pbs Essay Research Paper PROCESS BASED SECURITY
Pbs Essay, Research Paper PROCESS BASED SECURITY, WHAT IS IT AND HOW IT WILL CHANGE YOUR COMPUTER?S LIFE This note is for the purpose of explaining a new way to implement operating system security called process-based security. First, an explanation of traditional operating system security is given. Next, an explanation of process-based security is given.
Making A Web Page Essay Research Paper
Making a Web Page For my science project I chose to create a web (internet) page, dealing with science. This project consists of using a computer and a html editor to create a page that can be found on the internet. The next paragraph will explain how to make an internet page. The steps to making a web page to post on the internet, is very easy.
Java Project Essay Research Paper Jennifer
Java Project Essay, Research Paper // Jennifer Farley // Java Term Project import java.awt.*; import java.applet.*; public class scroll extends java.applet.Applet implements Runnable {
Differences Between Java And C Essay Research
Paper DIFFERENCES BETWEEN JAVA AND C++1 INTRODUCTION Since its release in 1995, Java has been hyped in many places, including computer magazines, broadcast news, and the Internet, as the solution to all problems in the application development community. As it has only been around for approximately 4 years now, it is still emerging into the programming language market.