- •Insert, update және delete артықшылықтарын құрылған көрсетімде қолданушы егер сәйкес артықшылықтарын кестелер көрсетілімінде қолданылатын болса ала алады.
- •17.1 Кестесі
- •Insert құқығы кестеге жаңа жолдар қосуға мүмкіндік береді немесе көрсетім кесте немесе көрсетім деңгейінде беріледі; ол баған деңгейінде беріле алмайды.
- •Odbc архитектурасы odbc интерфейсі келесі элементтерді қамтиды:
- •Операторды құру: PreparedStatement класы
- •Item – Parameter нақты обьектісін алу.
- •Connection обьектісі
Odbc архитектурасы odbc интерфейсі келесі элементтерді қамтиды:
Қоңырауы ДҚ-на қосымшаны қосылуға, SQL-операторларды орындауға және нәтижелі мәліметтер жиынтығынан ақпаратты алуға мүмкіндік беретін функциялар кітапханасы
ДҚ-дағы тіркелудің және қосылудың стандартты әдісі
Әр-түрлі типті мәліметтерге стандартты көрсетім
Қателіктер кодының стандартты жиынтығы
SQL-операторлардың X/Open және ISO CGI спецификациясын қолдануға құрылған типтік синтаксисі.
ODBC жалпы архитектурасы 4 элементті қамтиды:
Қосымша. Бұл компонент мәліметтерді өңдеу және ДҚ SQL-операторларын жіберу үшін және ДҚ қайтарған ақпаратты таңдау үшін ODBC кітапханасының функцияларын қайтарады.
Драйверлер менеджері. Қосымшаның сұрауына байланысты драйверлерді жүктеуді атқарады.
ДҚ-ның драйверлерімен агенттері. Бұл компоненттер ODBC функцияларының шақыруларын өңдейді және SQL сұраныстардынақты мәліметтер бастауына бағытттайды, сонымен қатар алынған нәтижелерді қосымшаға қайтарады. Қажет болған жағдайда драйверлер мақсатты ДҚ-дың синтаксистік талаптарына сәйкестендіру мақсатында қосымшаның шығыс сұранысттарының модификациясын орындайды.
Мәліметтер бастаулары. Қосымша қолданушысының рұқсатын қажет ететін мәліметтерді қамтиды. Мәліметтер мақсатты ДҚ-мен, операциялық жүйемен, сонымен қатар егер қолданылатын болса желілік операциялық жүйемен басқарылатын ДҚ-да сақталады.
Жоғарыда айтылғандардан шығатыны ODBC технологиясы SQL дің әртүрлі ДҚ-на рұқсаттың бірдей интерфейсін ұсынады. SQL тілі оның ішінде мәліметтерге қатынаудың негізгі стандарты ретінде қолданылады. ODBC (Си тіліне орнатылған) интерфейсі әмбебаптылықтың жоғары деңгейін қамтамасыз етеді: бір қосымша жалпы кода құралы ретінде ДҚ-ның сәйкес әртүрлі SQL-дерге қатынай алады. Бұл құрастырушыға тұтынушы-сервер қосымшасын SQL тілін қолдайтын, нәтижесінде сол қосымша әртүрлі ДҚ-ын басқарудың серверлік жүйесінің ДҚ-на рұқсат алатын нақты ДҚ-ның ерекшеліктерін ескермей қосымшаларды құруға және жаюға мүмкіндік береді. ODBC технологиясының мұндай функционалды мүмкіндіктері ДҚБСЖ-нің әртүрлі типтерінің қосымшаларын құруға мүмкіндік береді. Әртүрлі типті ДҚБСЖ-н қосымшалармен байланыстыру үшін сәйкес ODBC-драйверлер қолданылады. Айтып кеткендей ODBC технологиясы өндірістік стандарт ретінде қабылданған.
ODBC-технологиясы қолданылып жатырған ДҚБСЖ-мен қосымша арасындағы қосымша деңгейдің құрылуын қарастырады. ODBC қызметі ақпаратты таңдауға қосымшалардан сұраныстарды алуға және сақтаулы ақпаратқа рұқсат алу үшін адрестелген ДҚ-ның ядро тіліне сұраныстарды аударуға мүмкіндік береді.
ODBC-ның негізгі тағайындауы
ODBC негізгі мағынасы ол екіжақты қарым қатынас жасайтын серверлік ДҚ-дың ерекшеліктерінің абстракты қосымшасынан түрады, сондықтан серверлік ДҚ кез-келген клиенттік қосымшаға түссіз болады.
Деректермен қосымшаның екіжақты әрекеті драйверлер менеджері көмегімен іске асады, ол нақты ДҚБСЖ коммуникациялық модулдерін, желілік құралдарды пайдаланып ДҚБСЖ форматымен сәйкес келетін қажетті драйверді қосады және ДҚБСЖ серверіне SQL-операторларды жібереді. Сервердегі сұраныстардың орындалу нәтижелері қосымшаға қайтадан жіберіледі.
ODBC технологиясының мәртебесі кез-келген типті ДҚБСЖ-дегі мәліметтерге рұқсат интерфейсінің абстракттылығының жоғары деңгейі көмегімен қосымшаларды құрастырудың қарапайымдылығында. Сонымен қатар кез-келген ДҚ типімен юайланысқан мәліметтер бастауын құру мүмкіндігі бар. Бұл технология көмегімен клиент-сервер қомышаларын құруға болады, сонымен қатар ДҚБСЖ құралдарымен мақсатты қосымшаның клиенттік бөлігін, ал SQL Server құралдарымен серверлік бөлігін құруға болады.
ODBC технологиясының негізгі жетіспеушілігі мәліметтерге рұқсат жылдамдығын азайтатын сұраныстар трансляциясының қажеттілігінде. Тұтынушы-сервер жүйесінде ол сұранысты компьютер-тұтынушыдан компьютер-серверге жіберу жолымен дұрысталады.
Мәліметтер бастауы және ODBC
Тұтынушы қосымшасында ODBC құралдарын қолданғанда нақты мәліметтер бастауына, ал ол арқылы олар арқылы көрсетілетін ДҚБСЖ-не қарым-қатынас жүзеге асады. Сонымен қатар жалпы ODBC жүйесі орнатылады және ДҚ-мен байланысуды орнатқанда қолданылатын аттар берілетін ДҚ-драйверінің жұптары анықталады.сәйкес жұптар мәліметтер бастауының аттары немесе мәліметтер бастауының аталуы ( Data Source Names, DSN) ретінде аталады.
Мәліметтер бастауының құрылуы басқару панелінің терезесінде шақырылатын ODBC Data Source Administrator утилитасының көмегімен орындалады. мәліметтер бастауының параметрлерінің құрамына кіретіндер: оның аты және суреттелуі; байланыс орнатылатын сервер; аутентификация әдісі; ДҚ аты.
DSN аты қолданбалы қосымшадағы ODBC мәліметтер бастауына қатынауға мүмкіндік береді.
Java-бағдарламалардағы ДҚ-мен екі-жақты әрекет
ДҚ-нан ақпараттарды шығару және өңдеу жалпы жағдайда келесі тапсырмаларды орындау кезінде байланысады:
ДҚ-ын қосу немесе өшіру;
SQL-транзакциялардың қосылуы, фиксация және откат;
SQL-сұраныстардың нәтижелерінің көрінуі;
Жаңартылған курсорлардың мәліметтерді көру, орнату, өшіру және өзгерту үшін құрылуы;
Мультимедиа-құрамы бар үлкен бинарлы обьекттерге рұқсат;
Мысал ретінде қолданбалы бағдарламалар ДҚ-на рұқсат ретінде қарастырамыз:
Java-бағдарламалардағы ДҚ-мен екіжақты қарым-қатынас;
ADO технологиясын қолданумен сценарийлер тілінен ДҚ-на қатынау.
Java-бағдарлама сыртқы ДҚ-мен жұмыс істеу үшін мамандандырылуы мүмкін. Осы мақсатпен Java-ға ДҚ-на рұқсат үшін класстар қосылған (java.sql.*).
Java-бағдарламаның ДҚ-ның сыртқы серверімен екіжақты-арақатынасы Java-ның ДҚ-мен сәйкестігіне жауап беретін ( Java Database Connectivity, JDBC ) мамандандырылған хаттама құралы арқылы жүзеге асады. Ол ODBC интерфейсінің принципінің негізінде құрылған және әртүрлі ДҚБСЖ-не рұқсат ұйымдастырылуы кезінде Java-коданы стандарттау үшін қолданылады.
ДҚ-на қосылу этапы драйвердің жүктелуін және байланысуды құруды қамтиды.
Драйвердің жүктелуі
Нақты ДҚ қарапайым түрде бір немесе бірнеше драйверлердің көмегімен мүмкін. Бұл драйвер JDBC-ODBC бағдарлама қиылысуы деп аталады және JdbcOdbc.class түрінде айқындалған.
JDBC бағдарламасы ODBC-ға құрастырылуы жағынан жақын болғандықтан, қиылысу бағдарламасы JDBC орнатуларын қамтиды. Үшкі деңгейде бұл драйвер ODBC шақыруларындағы Java әдісін суреттейді және сол арқылы кез-келген ODBC драйверімен әрекет етеді. Мұндай қиылысу бағдарламасының мәртебесі ODBC-драйверлер кеңінен таралғандықтан JDBC-ның кез-келген ДҚ-на рұқсатымен анықталады.
JDBC-ODBC-драйвері көпір-драйвері болып саналады, яғни JDBC-мен қатынау деңгейінің (Call Level Interface, CLI) басқа интерфейсінің арасында көпір құрады. Ол JDBC қатынауын өңдейді және өз кезегінде ODBC мәліметтер бастауына SQL сұранысты жіберетін ODBC функциясын шақырады. JDBC-ODBC драйвері төмендегі командалар арқылы жүктеледі:
Class.forName(
"com.ms.jdbc.odbc.JdbcOdbcDriver");
Байланысты құру: Connection класы
DriverManager –класы класстар иерархиясындағы ең жоғарғысы. Ол драйверлер туралы, жағдайы жайлы ақпаратты қарайды, драйверді оның жүктелуі кезінде тіркейді және т.б. байланыс орнату қажет болған кезде бұл класс URL JDBC-қа байланысты драйверді таңдайды.
Мәліметтер бастауымен байланысты DriverManager класының getConnection әдісінің көмегімен құруға болады. Мәліметтер бастауы тапсырмасы үшін URL атын меншіктеу келісуі қолданылады. Internet ережелеріне сәйкес JDBC ДҚ-ын төмендегідей формадағы URL арқылы құрады:
jdbc:<субхаттама>:<ДҚБСЖ мен немесе хаттамамен байланысқан ат >
odbc субхаттама аты ODBC форматтағы мәліметтер бастауына тағайындалған. Қарапайым ODBC ДҚ-на арналған JDBC URL келесі түрде болады:
jdbc:odbc:<DSN- ODBC аты>;
user=<қолданушы аты>;pw=<құпия сөз>
Connection ( байланысу ) класы- JDBC-дағы ең маңыздыларының бірі. Ол мүмкіндіктердің кең көлемін ұсынады: операторларды құрудан транзакцияларды өңдеуге дейін. Connection обьектісі байланысты орнатудың барлық аспектілерін басқарады. Нақты түрде, Connection-бұл ДҚБСЖ-нің драйверіне бағыттайтын класс. Мәліметтер бастауына Connection обьектісін сәтті құрып, бағдарламаушы әртүрлі жолдармен мәлімет бастауларымен екіжақты әрекет ете алады. Ең кеңінен таралған қатынау обьекттердің SQL-операторларды басқаруынан тұрады.
JDBC де операторлар үшін обьекттердің 3 негізгі типі қамтылады:
Statement ;
PreparedStatement ;
CallableStatement.
SQL операторы бірден орындалуы мүмкін ( Statement ), компилирленген ( PreparedStatement ), және процедураларды шақыру түрінде ( CallableStatement ).
Бұл обьекттерді құру үшін Connection класы сәйкес түрде үш әдісті ұсынады:
createStatement() ;
prepareStatement(String sql) ;
prepareCall(String sql).
Операторларды құру: Statement класы
Statement обьектісі Connection обьектісінен createStatement() әдісімен құрылады және көбінесе бір рет орындалатын SQL-операторларға сәйкес келеді.
Сұраныс SQL-операторларды орындау үшін қарапайым жолдарды қайтарған кезде executeQuery(String sql) әдісін қолдану керек. Мұндай жағдайда-бұл SELECT таңдауының статикалық SQL-сұранысы. ЕxecuteQuery(String sql) әдісі SQL жолын қабылдайды, оны драйверлер диспетчері арқылы мәліметтер бастауына жібереді, нәтижелер жиынтығын алады және оны қолданбалы бағдарламаға қайтарады. Әдіс нәтиженің ResultSet типіндегі тек бір нәтижелер жинағын қайтарады. Егер мәліметтердің бірнеше жиынын қайтару керек болса execute(String sql) әдісі қолданылады.
Нәтижелер жинағын қайтармайтын (мысалы UPDATE, DELETE и INSERT ) SQL-операторлар үшін Statement обьектісі SQL жолын алып және толық қайтаратын executeUpdate(String sql) әдісін қолданады. Бұл толық SQL-операторымен өңделген жолдар санын көрсетеді.
Нәтижелерді алу: ResultSet класы
Нәтижелер жиынтығын қамтитын ResultSet обьекті мәліметтердің кестелік жиыны болып табылады, яғни унифицирленген бағандарға ұйымдастырылған мәліметтер қатарынан тұрады. JDBC-ны қолданушы Java тіліндегі бағдарлама біруақытта мәліметтердің тек бір ретін ғана бере алады. Келесі ретке өту үшін ол 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 айнымалыларының мәні қолданыла алады
// кейін элементтерде қолданыла алады
// қолданушы, графикалық интерфейсте
}
18.1. Статикалық SQL-сұраныстың Java-бағдарламадағы оқушылық есептік жазбаға орындалуы
