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. Henri Rousseau, ‘Az álom’ PHP JDBC ODBC ADO ESQL DAO OLEDB OCI ADO JSQL SQL XSQL TSQL PL/SQL.

Hasonló előadás


Az előadások a következő témára: "SQL programozási felületek. Henri Rousseau, ‘Az álom’ PHP JDBC ODBC ADO ESQL DAO OLEDB OCI ADO JSQL SQL XSQL TSQL PL/SQL."— Előadás másolata:

1 SQL programozási felületek

2 Henri Rousseau, ‘Az álom’ PHP JDBC ODBC ADO ESQL DAO OLEDB OCI ADO JSQL SQL XSQL TSQL PL/SQL

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

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

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 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; - több rekord jön át: Kurzor mechanizmus DBMS Alkalmazás kurzor

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 WHERE CURRENT OF autokurz; } 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) ODBC Oracle SQLServer Informix DB2 Sybase VFP Access Excel Txt

11 ODBC Elvégzendő funkciók parancs konverzió adat konverzió kapcsolat felvétel funkció bővítés hibakezelés információ nyújtás párhuzamosság INSERTAPPEND DATETIMEDATE SQLCONNECT ISOLATION LEVEL CONNECT … UPDATE SELCETERROR() SQLTABLESSELECT SQLCONNECT(1) SQLCONNECT(2)

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

13 ODBC API (C) Kapcsolattartás: handlerek session h. connection 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 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) 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

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 SQLServer ODBC OLEDB-D OLEDBRDOJET DAO ODBCDAO/JETDAORDOADO

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

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

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

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; sC.ExecuteNonQuery(); nW.Close(); }

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

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

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

28 JDBC – API (Java) 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) { } Logikailag olyan objektum szerkezet mint az ADO-nál gazdagabb metódus és tulajdonságkészlet

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. Henri Rousseau, ‘Az álom’ PHP JDBC ODBC ADO ESQL DAO OLEDB OCI ADO JSQL SQL XSQL TSQL PL/SQL."

Hasonló előadás


Google Hirdetések