Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

SQL programozási felületek

Hasonló előadás


Az előadások a következő témára: "SQL programozási felületek"— Előadás másolata:

1 SQL programozási felületek

2 Henri Rousseau, ‘Az álom’
ADO ESQL OCI PHP JDBC ADO ODBC SQL JSQL 1910 lehetőségek kavalkádja XSQL PL/SQL DAO OLEDB TSQL Henri Rousseau, ‘Az álom’

3 EXEC SQL UPDATE tabla SET .. if (res < 0) {… E-SQL
DEFINE CLASS sracs AS GRID sracs.RECORDSOURCE=”SELECT … OPI CLI re = SQLEXECUTE(cs, ”SELECT * …”) O-CLI re = CON.executeQuery(”SELECT * …”) DBMS ODBC OPI : Object Parameter Interface (sajat elnevezés) SQL JDBC native

4 Beágyazott SQL SQL parancsok kiadása programból: - gazda nyelvi környezetbe beépített SQL parancsok - beágyazott SQL : interaktív SQL szintaktikát követ - CLI: függvényeket definiál az adatkapcsolathoz 3GL program scanf(”%d”,&lv); … INSERT INTO ARU VALUES(C.NEXTVAL,:lv); if (sqlca.errcode==0) { printf(“Sikeres beszuras\n”); } DBMS

5 Forrás állomány = gazdanyelv + SQL
Beágyazott SQL rendszerek struktúrája Forrás állomány = gazdanyelv + SQL Előfordító Gazdanyelvi forrás Fordító Object gépi kód Linker DBMS Library EXE állomány DBMS KL

6 Gazdanyelvi változók deklarációja és beépítése
Adatok fogadása - egy rekord jön át: SELECT m-lista INTO v-lista FROM …; EXEC SQL BEGIN DECLARE SECTION; int lv; EXEC SQL END DECLARE SECTION; main() { printf (“Kerem a tipust:”); scanf(”%s”,&tip); EXEC SQL SELECT COUNT(*), MIN(ar) INTO :db, :mar FROM AUTO WHERE tipus = :tip; printf (“Db = %d Max ar = %d\n”, db, mar); }

7 - több rekord jön át: Kurzor mechanizmus
DBMS Alkalmazás kurzor EXEC SQL DECLARE CURSOR k1 FOR SELECT rsz, ar FROM auto FOR UPDATE OF ar; … OPEN k1; while () { EXEC SQL FETCH k1 INTO :r1, :a1; EXEC SQL UPDATE auto SET ar=:ua WHERE CURRENT OF k1; } EXEC SQL CLOSE k1;

8 Közvetett hibakezelés
WHENEVER hiba valasz; SQLERROR, NOT FOUND STOP, CONTINUE, GOTO c, DO fv indikátor változók : :r1:r2 WHENEVER NOT FOUND GOTO ki; while () { EXEC SQL FETCH k1 INTO :r1:e1, :a1; if (e1>0) printf (”rsz=%s ar=%d”,r1,a1); } ki:

9 Beágyazott SQL mintapélda
EXEC SQL DECLARE autokurz CURSOR FOR SELECT tip, ar FROM auto WHERE tip LIKE 'FIAT%' OR tip LIKE 'LADA%' FOR UPDATE OF ar; EXEC SQL OPEN autokurz; EXEC SQL WHENVER NOT FOUND GOTO vege; while (1) { EXEC SQL FETCH autokurz INTO :atip,:aar:aai; if (aai < 0) continue; if (tip[0] == 'F') { EXEC SQL UPDATE auto SET ar = ar*1.15 WHERE CURRENT OF autokurz; } else { EXEC SQL UPDATE auto SET ar = ar*1.12 } vege: EXEC SQL CLOSE autokurz;

10 ODBC CLI Open Database Connectivity (MS, ~1993) Célja egységes API elérési felület biztosítása a különböző relációs jellegű adatforrások felé (a heterogenitási problémák leküzdése) Oracle SQLServer Informix DB2 Sybase VFP Access Excel Txt ODBC

11 Elvégzendő funkciók ODBC INSERT APPEND parancs konverzió adat konverzió kapcsolat felvétel funkció bővítés hibakezelés információ nyújtás párhuzamosság DATETIME DATE SQLCONNECT CONNECT ISOLATION LEVEL … UPDATE SELCET ERROR() SQLTABLES SELECT SQLCONNECT(1) SQLCONNECT(2)

12 ODBC struktúra ODBC Driver 1 Driver manager Driver 1 Driver 1 ODBC ODBC N Egylépcsős Kétlépcsős

13 ODBC API (C) Kapcsolattartás: handlerek session h. connection h. connection h. command h. command h. command h. e = sqlAllocEnv() c = sqlAllocConnect(e) p = sqlAllocStmt(c) sqlFreeEnv() sqlFreeConnect() sqlFreeStmt() sqlConnect(c,elérés) sqlPrepare() sqlExecDirect(p,parancs) sqlExec() sqlFetch(p) sqlBindCol() sqlGetData() sqlError() sqlSetStmtOption() sqlTables()

14 SQLAllocEnv(&henv); //session létesítés
SQLAllocConnect(henv,&hdbc); //kapcsolat leíró foglalás SQLConnect(hdbc,(unsigned char*) ”HELLO”,SQL_NTS,NULL,0, NULL,0); SQLAllocStmt(hdbc,&hstmt); //parancs leíró foglalás SQLExecDirect(nstmt,(unsigned char*) “SELECT * FROM Minta “, SQL_NTS); //parancs végrehajtás for (rc=SQLFetch(hstmt);rc==SQL_SUCCESS; rc=SQLFetch(hstmt)){ //rekordok lekérdezése SQLGetData(hstmt,1,SQL_C_CHAR,SzData, Siyeof(sydata),&cbData); //mező lekérdezése MessageBox(NULL,syData,”ODBC”,MB_OK); //az eredmény kiírása } SQLFreeStmt(hstmt,SQL_DROP); //parancs leírás SQLDisconnect(hdbe); //lekapcsolódás SQLFreeConnet(hdbe); //leíró felszabadítás SQLFreeEno(henv) //session leíró

15 ODBC források menedzselése

16 VFP-ODBC egyszerűsített nyilvántartás - egy leíró struktúra (egész típusú azonosító) egyszerűsített adatkezelés - VFP lokális kurzorba tölti át az eredményt hdbe=SQLConnect(DSN, felhasználó, jelszó) SQLExec(hdbc,”SQL”,cursornev) SQLColumns(hdbc,”tabla”) SQLCommit (hdbc) SQLTables(hdbc) SQLSETProp(hdbc,parameter,ertek) SQLGetProp(hdbe,parmeter) SQLRollback(hdbc) SQLDisConnect(hdbc)

17 pw = allt(thisform.jszo.value)
con = sqlconnect("LocalServer","ujabb",pw) if con < 0 …… endif p = sqlexec(con,"SELECT max(kod) db FROM dolg","cu1") if p > 0 select cu1 kod = cu1.db + 1 endif p = sqlexec(con,"INSERT INTO DOLG VALUES(" + allt(str(kod))+ ",'" + allt(thisform.nev.value)+"') ")

18 MS elérési felületek ODBC DAO/JET DAO RDO ADO DAO JET RDO OLEDB ODBC OLEDB-D SQLServer

19 ADO felület Universal Data Access RDBMS OODBMS ISAM MAPI LDAP XML Objektum orientált szemléletű ADO.Net környezet

20 ADO.Net objektum modell
Framework Data Provider: (adatkapcsolat) - Connection - Error, Property - Command - Parameter, Property - DataReader - Field, Property - DataAdapter DataSet: (lokális kezelés) - DataTable - DataRelationCollection DataReader: ReadOnly kurzor

21 Objektumok kapcsolata
DataReader Connection ExecuteNonQuery() ExecuteReader() CreateCommand() Command Open() Prepare() BeginTransaction() CreateParameter() ConnectionString CommandText CommandType Transaction CommandTimeout DataParameter

22 RecordsAffected DataReader NextResult() FieldCount GetInt() Close() Read() DataRecord GetString() GetName() getFieldType() Transaction Commit() IsolationLevel DataParameter SourceColumn Rollback() DbType Value

23 { SqlConnection nW = new SqlConnection ( ”Data Source=LocalHost”,….); SqlCommand sC = nW.CreateCommand(); sC.CommandText = ”SELECT ar FROM b …”; nW.Open(); SqlDataReader mR = sC.ExecuteReader(); while (mR.Read()) { …. mR.GetInt(1); … mR.GetString(..)… } mR.Close(); nW.Close();

24 { OleDbConnection nW = new OleDbConnection (…); nW.Open(); OleDbCommand sC = new OleDbComamnd(nul, nW); sC.CommandText = ”INSERT INTO … sC.Prepare(); sC.ExecuteNonQuery(); sC.Parameters[0].Value = 13; nW.Close(); }

25 DataSet (memória adatcache)
Tables Relations View Rows Primary Key Constraints Columns FilterName ReadOnly DataType Attributes AutoIncrement Size BaseType DefaultValue IsArray

26 ADO-VFP Con = CREATEOBJECT(”ADODB:CONNECTION”) && registry : HKEY_CLASSES_ROOT

27 JDBC Kapcsolati típusok ODBC JDBC D 1 JDBC-ODBC DBMS D 1 Java JDBC-DBAPI J-Net Net JDBC tiszta JDBC

28 JDBC – API (Java) Logikailag olyan objektum szerkezet mint az ADO-nál gazdagabb metódus és tulajdonságkészlet Class. forName(”.. driver…”) c = DriverManager.getConnection(elérés) s = c.createStatement() r = s.executeQuery(parancs) r.next() r.getStrting(mezo) r.getInt(mezo) try {…} catch (SQLException e) { }

29 public static void main(String[] args) {
String url = "jdbc:odbc:hinfodbc"; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(url,"scott","tiger"); rs = stmt.executeQuery("SELECT * FROM dolgozo"); while (rs.next()) { int i = rs.getInt("kod"); String s = rs.getString("nev"); System.out.println(i + " : " + s + " : " + j); } rs.close(); stmt.close(); con.close(); catch (SQLException ex) { System.out.println("SQL hiba:" + ex.getSQLState()); } }


Letölteni ppt "SQL programozási felületek"

Hasonló előadás


Google Hirdetések