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

Miskolci Egyetem Alkalmazott Informatikai Tanszék 2007

Hasonló előadás


Az előadások a következő témára: "Miskolci Egyetem Alkalmazott Informatikai Tanszék 2007"— Előadás másolata:

1 Miskolci Egyetem Alkalmazott Informatikai Tanszék 2007
JDBC Miskolci Egyetem Alkalmazott Informatikai Tanszék 2007 1

2 A JDBC története JDBC = Java DataBase Connectivity
Az SQL és a X/Open Call Level Interface (CLI) köré épül. A CLI-t a Microsoft ODBC (Open Data Base Connectivity) termékében már korábban megvalósították. Az ODBC java portolása nem járható út: ODBC egy c interfész Procedurális módszertanra épül, nehezen egyeztethető a Java OO módszeréhez ODBC sok helyen void* pointereket használ, ami sérti a Java típusbiztonságát. Egyetlen járható út a JDBC API a CLI specifikáció alapján való újratervezése volt.

3 A JDBC API alapszolgáltatásai:
kapcsolódás a DB-hez. SQL parancsok végrehajtása SQL parancsok eredményeinek feldolgozása A JDBC-vel a kétrétegű és háromrétegű adatbázis elérési modell támogatott: kétrétegű modell: az alkalmazás közvetlenül kommunikál az adatbázis-kezelő rendszerrel. A kommunikáció, a hálózaton keresztül is történhet, amennyiben az adatbázis-kezelő egy másik számítógépen fut. Háromrétegű modell: egy középső réteget alkalmazunk az adatbázis műveletek elfedésére. Az alkalmazás, a középső réteggel kommunikál. előnyök: a szoftver karbantartási költségei lecsökkennek az optimalizálási lehetőségek jelentősen megnőnek

4 JDBC meghajtóprogramok
A meghajtóprogramok 4 csoportja: JDBC-ODBC híd + ODBC meghajtó. Létező ODBC meghajtó elérését teszi lehetővé Az ODBC bináris meghajtó miatt ez a módszer elveszti hordozhatóságát JDBC - kliens API áthidaló. A meghajtóprogram a JDBC hívásokat közvetlenül átalakítja az adott adatbázis kliens - API hívásaira. Minden kliens gépen ott kell lennie az API-t megvalósító bináris állománynak (pl: az Oracle OCI meghajtója) A bináris meghajtó miatt ez a módszer is rontja a hordozhatóságot

5 JDBC – hálózati protokoll Java meghajtóprogram: a JDBC hívásokat adatbázisfüggetlen hálózati protokollhívásokká (RMI, CORBA) alakítja, amelyet egy kiszolgáló értelmez és alakít át az adott adatbázis-kezelő API-j-nak hívásává. ORACLE thin driver JDBC – saját protokoll Java meghajtóprogram: Javaban megvalósított meghajtóprogram, amely a JDBC hívásokat közvetlenül a megfelelő adatbázis-kezelő adatmanipulációs protokolljának hívásivá alakítja át. a legtöbb meghajtó ezt a modellt valósítja meg ez a modell nem DB független, de például alkalmazásszerverekben alkalmazva mégis

6 Kitekintés - új tendenciák
A JDBC, és általában az adatbázis kezelőt használó szoftverek fejlesztése és karbantartása fárasztó feladat a számtalan hasonló, ismétlődő részfeladat miatt. Az utóbbi években számtalan eszközt fejlesztettek a nyílt forráskódú közösségek ennek enyhítésére. Az eszközök működésének alapja a relációs adatbázistáblák és Java osztályok közvetlen megfeleltetésén alapulnak: egy DB tábla minden egyes sora a táblához rendelt osztály egy-egy objektumpéldánya lesz. A tábla oszlopai pedig az osztály adatmezőinek felelnek meg. Az objektumok manipulációja automatikus SQL parancsokat generál. A két legismertebb kezdeményezés: Hibernate ( map file-ok segítségével képezi le az objektumokat DB táblákra. Többszintű cache segítségével számos esetben jelentős sebességnövekedés érhető el. JDBC-re épül. DB4o ( valódi OODB megvalósítás. Nem igényel köztes map fileokat. .net, PDA megvalósítása is van.

7 A JDBC használata Adatbázis URL-ek.
Szintaxis: jdbc:alprotokoll:adatforrás leírása A protokoll neve mindig jdbc. Alprotokoll: ezt a nevet a meghajtó forgalmazója határozza meg. Adatforrás leírása: hálózati cím, adatbázis név, jelszó, stb.. jdbc:mysql://localhost:3306/testDB jdbc:JSQLConnect://mydatabase

8 JDBC kapcsolódás Kapcsolódás az adatbázishoz. A bemutatott példa Oracle esetén használható, de a jelölt részek cseréje után tetszőleges JDBC meghajtó esetén alkalmazható Connection connection = null; try { // Load the JDBC driver String driverName = "oracle.jdbc.driver.OracleDriver"; Class.forName(driverName); // Create a connection to the database String serverName = " "; String portNumber = "1521"; String sid = "mydatabase"; String url = + serverName + ":" + portNumber + ":" + sid; String username = "username"; String password = "password"; connection = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { // nem található a meghajtó } catch (SQLException e) { // nem lehet csatlakozni az adatbázishoz }

9 SQL parancs futtatása Tábla létrehozása Tábla törlése try {
Statement stmt = connection.createStatement(); // tábla létrehozása String sql = "CREATE TABLE mytable(szoveg VARCHAR(254))"; stmt.executeUpdate(sql); } catch (SQLException e) { } Tábla törlése try { Statement stmt = connection.createStatement(); stmt.executeUpdate("DROP TABLE my_table"); } catch (SQLException e) { }

10 JDBC típusok Java típusok mentése a MySQL adatbááziskezelőbe try {
Statement stmt = connection.createStatement(); String sql = "CREATE TABLE mysql_all_table(" + "col_boolean BOOL, " // boolean + "col_byte TINYINT, " // byte + "col_short SMALLINT, " // short + "col_int INTEGER, " // int + "col_long BIGINT, " // long + "col_float FLOAT, " // float + "col_double DOUBLE PRECISION, " // double + "col_bigdecimal DECIMAL(13,0), " // BigDecimal + "col_string VARCHAR(254), " // String + "col_date DATE, " // Date + "col_time TIME, " // Time + "col_timestamp TIMESTAMP, " // Timestamp + "col_asciistream TEXT, " // AsciiStream (< 2^16 bytes) + "col_binarystream LONGBLOB, " // BinaryStream (< 2^32 bytes) + "col_blob BLOB)"; // Blob (< 2^16 bytes) stmt.executeUpdate(sql); } catch (SQLException e) { } Java típusok mentése a MySQL adatbááziskezelőbe

11 JDBC típusok Java típusok olvasása a MySQL adatbáziskezelőből try {
Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM mysql_all_table"); // Fetch each row from the result set while (rs.next()) { boolean bool = rs.getBoolean("col_boolean"); byte b = rs.getByte("col_byte"); short s = rs.getShort("col_short"); int i = rs.getInt("col_int"); long l = rs.getLong("col_long"); float f = rs.getFloat("col_float"); double d = rs.getDouble("col_double"); BigDecimal bd = rs.getBigDecimal("col_bigdecimal"); String str = rs.getString("col_string"); Date date = rs.getDate("col_date"); Time t = rs.getTime("col_time"); Timestamp ts = rs.getTimestamp("col_timestamp"); InputStream ais = rs.getAsciiStream("col_asciistream"); InputStream bis = rs.getBinaryStream("col_binarystream"); Blob blob = rs.getBlob("col_blob"); } } catch (SQLException e) { Java típusok olvasása a MySQL adatbáziskezelőből

12 Prepared Statement try {
String sql = "INSERT INTO mytable (szoveg) VALUES(?)"; PreparedStatement pstmt = connection.prepareStatement(sql); // 10 sor beszúrása for (int i=0; i<10; i++) { // érték beállítása pstmt.setString(1, ”sor” + i); // az sql végrahajtása pstmt.executeUpdate(); } } catch (SQLException e) {}

13 Open Source adatbáziskezelők
mySQL postgreSQL Hipersonic SQL

14 DB eszközök DBDesigner - Adatbázistervező
DBVisualizer – Általános adatbázis megjelenítő


Letölteni ppt "Miskolci Egyetem Alkalmazott Informatikai Tanszék 2007"

Hasonló előadás


Google Hirdetések