class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

JDBC

загрузка драйвера
соединение с БД
выполнение запросов
параметризованные запросы

ODBC

ODBC
ODBC для wxWidgets
JDBC - ODBC мост

ADO

ADO

VCL

VCL компоненты

PHP

PHP

DBI (perl)

dbi пример

Hibernate

Hibernate

Справка по JDBC

Соединение с БД

соединение по строке связи

При статической загрузки драйвера может использоваться соединение с указанием полной строки связи.


// соединение с MySQL
Connection conn = null;
try {
    // в строке хост, пользователь и пароль
    conn = DriverManager.getConnection
             ("jdbc:mysql://localhost/test?" +
              "user=root&password=psw");       
} 
catch (SQLException ex) {
    // обработка ошибок
    System.out.println("SQLException: " + ex.getMessage());
    System.out.println("SQLState: " + ex.getSQLState());
    System.out.println("VendorError: " + ex.getErrorCode());
}

соединение по параметрам соединения

Данный способ подходит при динамической загрузке, так как менеджер драйверов не принимает драйвера, загруженные не системным загрузчиком.


// сохраняем ссылку на загруженный драйвер
Driver instance =(Driver) cl.loadClass
        ("org.gjt.mm.mysql.Driver").newInstance();
Properties props = new Properties();
props.put("user", "root");
props.put("password", "psw");
... // если есть другие параметры
Connection conn = instance.connect
        ("jdbc:mysql://localhost/test", props);

Так как основными параметрами соединения являются адрес базы данных, пользователь и пароль, то в jdbc предусмотрен метод упрощенного соединения.


conn = DriverManager.getConnection(
      "jdbc:postgresql://localhost:5432/postgres",
      "root", // пользователь
      "root1" // пароль
);

создание драйвера-обертки

"Обмануть" драйвер менеджера можно созданием драйвера-обертки, который будет загружаться обычным образом.


Driver drv = (Driver) cl.loadClass(classname).
            newInstance();
DriverManager.registerDriver
            (new WarpDriver(drv));
Connection conn = DriverManager.getConnection
            ("jdbc:mysql://localhost/test?" +
             "user=root&password=psw");

Ниже приведен код драйвера-обертки WarpDriver, который просто вызывает методы динамически загруженного драйвера.


class WarpDriver implements Driver {
    // ссылка на динамически загруженный драйвер
    private Driver driver; 
    
    WarpDriver (Driver d) {
        driver = d;
    }
    
    public boolean acceptsURL
       (String u) 
    throws SQLException {
        return driver.acceptsURL(u);
    }
    
    public Connection connect
       (String u, Properties p) 
    throws SQLException {
        return driver.connect(u, p);
    }
    
    public int getMajorVersion() {
        return driver.getMajorVersion();
    }
    
    public int getMinorVersion() {
        return driver.getMinorVersion();
    }
    
    public DriverPropertyInfo[] 
        getPropertyInfo(String u, Properties p)
    throws SQLException {
        return driver.getPropertyInfo(u, p);
    }
    
    public boolean jdbcCompliant() {
        return driver.jdbcCompliant();
    }
}

особенности соединения

В Oracle несколько типов драйверов. Так thin драйвер соединяет без инсталляции клиентского модуля у пользователя. Но у него есть одна особенность. Если соединение происходит на той же машине, где установлен сервер, то вместо tns имени в строке связи необходимо указать строку определения tns (все, что идет после "tns_имя =" в файле tnsnames.ora). Либо использовать другой формат строки. Если компьютер находится в локальной сети, то в качестве хоста необходимо указать нормальный ip-адрес (именем "localhost" в отличие от MySQL здесь не обойтись). Формат строки связи специфичен для каждой СУБД.


// для MySQL
"jdbc:mysql://localhost:3306/test?user=root&password=root1"

// для Oracle
// имя базы (после символа @) может быть: 
//   1 строка в формате "//<host>:<port>/<service>"
//   2 строка в формате "<host>:<port>:<SID>"
//   3 tns имя
"jdbc:oracle:thin:user/psw@orcl"

// для PostgreSQL
// postgres - имя базы данных, а не схемы или
// сервера
"jdbc:postgresql://localhost:5432/postgres?user=root&password=root1"

Рейтинг@Mail.ru