1 / 29

SQL programozási felületek

SQL programozási felületek. ADO. ESQL. OCI. PHP. JDBC. ADO. ODBC. SQL. JSQL. XSQL. PL/SQL. DAO. OLEDB. TSQL. Henri Rousseau, ‘Az álom’. EXEC SQL UPDATE tabla SET .. if (res < 0) {…. E-SQL. DEFINE CLASS sracs AS GRID sracs.RECORDSOURCE=”SELECT …. OPI. CLI.

ornice
Download Presentation

SQL programozási felületek

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL programozási felületek

  2. ADO ESQL OCI PHP JDBC ADO ODBC SQL JSQL 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 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. 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 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) 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. sqlExecDirect(p,parancs) sqlExec() sqlFetch(p) sqlBindCol() sqlGetData() sqlError() sqlSetStmtOption() sqlTables() e = sqlAllocEnv() c = sqlAllocConnect(e) p = sqlAllocStmt(c) sqlFreeEnv() sqlFreeConnect() sqlFreeStmt() sqlConnect(c,elérés) sqlPrepare()

  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

  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() DataParameter IsolationLevel 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 … VALUES(@i,…)”; sC.Parameters.Add(”@i”,11); sC.Prepare(); sC.ExecuteNonQuery(); … sC.Parameters[0].Value = 13; sC.ExecuteNonQuery(); nW.Close(); }

  25. DataSet (memória adatcache) Tables View Relations 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()); } }

More Related