Databáze v Javě

Z MiS
Přejít na: navigace, hledání


Obsah

Jaké databázové stroje podporuje Java?

JavaDB

JDBC (Java DataBase Connectivity)

ODBC (Open DataBaseConnectivity)


API pro práci s databází

JDBC — The Java Database Connectivity
Java Data Objects (JDO)


Ověření/ruční připojení k serveru

Většina databázových serverů nepodporuje připojení z dálky!

Na vlastním serveru můžete pro konfiguraci nastavení přístupu z dálky použít návod: Vzdálený přístup k databázi.


Zařazení ovladače JDBC do projektu (NetBeans 8)

Pokud ovladač v seznamu není, můžete ovladač přidat ručně (uvádíme variantu pro MySQL)

Práce s JDBC

Import tříd

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

Navázání spojení

Class.forName("com.mysql.jdbc.Connection");
String url = "jdbc:mysql://" + adresa-serveru + "/" + název-databáze";
Connection con = DriverManager.getConnection(url, userDB, passDB);
Příklad kódu
// Zkontrolujeme instalaci ovladače
try {
    Class.forName("com.mysql.jdbc.Connection");
} catch (ClassNotFoundException ex) { 
    JOptionPane.showMessageDialog( 
            null, 
            "Ovladač databáze není správně zahrnut do projektu! Nenalezena třída: "+ ex.getMessage()+"!", 
            "Chyba ovladače JDBC", 
            JOptionPane.ERROR_MESSAGE); 
    System.exit(1); 
} 

// Připojíme se
String host = "192.168.1.1"; // IP databázového stroje nebo doménové jméno 
String nazevDatabaze = "programovani"; 
String userDB = "progoa"; 
String passDB = "progoauh"; 
String url = "jdbc:mysql://" + host + "/" + nazevDatabaze; 

Connection con = null; 
try {
    con = DriverManager.getConnection(url, userDB, passDB); 
} catch (SQLException ex) { 
    JOptionPane.showMessageDialog( 
            null, 
            "Chyba při otevření spojení s s databází:"+ ex.getMessage(), 
            "Chyba spojení s databází", JOptionPane.ERROR_MESSAGE); 
    System.exit(1); 
}

Pro připojení v rámci jednoho počítače můžeme použít pojmenovanou rouru (named pipe). Touto variantou se zde nebudeme zabývat.

Vytvoření dotazu

java.sql.Statement con.createStatement();

Select

statement.executeQuery(String select);
ResultSet statement.getResultSet();

ResultSet

boolean rs.next()
String rs.getString(číslo sloupce nebo název sloupce jako String)
int rs.getInt(...)
...
while (rs.next()) { ... }

Update, Insert, Delete, DDL

statement.executeUpdate(String insert_etc)

Obecný dotaz

statement.execute(String sql)
Příklad kódu
        Statement st = null; 

        try { 
            st = con.createStatement(); 
            ResultSet rs = null; 
            rs = st.executeQuery("SELECT * FROM uzivatele"); 
            int pocetRadku = st.executeUpdate("INSERT INTO uzivatele VALUES ('karel', PASSWORD('x'));"); 
        } catch (SQLException ex) { 
            Logger.getLogger(DatabazePrvni.class.getName()).log(Level.SEVERE, null, ex); 
        } 

        if (con != null) { 
            try { 
                con.close(); 
            } catch (SQLException ex) { 
                Logger.getLogger(DatabazePrvni.class.getName()).log(Level.SEVERE, null, ex); 
            } 
        }

Uzavření spojení

con.isClosed()
con.close()


Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje