Как мы можем использовать подготовить заявление в JDBC, так как это интерфейс - PullRequest
0 голосов
/ 25 февраля 2011

В JDBC кроме DriverManager все являются интерфейсами. Как мы можем использовать такие интерфейсы, как PrepareStatement, Connection и т. Д.? 1004 *

Ответы [ 3 ]

4 голосов
/ 25 февраля 2011

Drivermanager возвращает конкретную реализацию Connection.Конкретная реализация Connection в свою очередь возвращает конкретную реализацию Statement.Конкретная реализация Statement в свою очередь возвращает конкретную реализацию ResultSet.И т. Д.

Эти конкретные реализации предоставляются драйвером JDBC.Чтобы узнать о базовой реализации, выполните

System.out.println(connection.getClass());

. Вы увидите, что это не java.sql.Connection, а только тот, который используется драйвером JDBC.

Интерфейсы просто здесьЧтобы определить контракт, исполнитель должен придерживаться.Это позволяет вам повторно использовать один и тот же код JDBC с разными драйверами JDBC без необходимости перезаписывать код (возможно, это может быть связано с запросами SQL для конкретных БД, но это не проблема Java / JDBC) всякий раз, когда вы хотите повторно использовать один и тот же код вдругой сервер БД.

0 голосов
/ 21 ноября 2015

DriverManager:

  1. скачать драйвер JDBC

  2. поместите его в свой проект JAVA

  3. определить путь к Водителю фляги в свойствах проекта

Пример подключения:

public static void exampleOfConnection() {  
    try {
        /* How to instanciate a connection with a specific driver manager */
        Class.forName("org.sqlite.JDBC");
        Connection connectionDB = DriverManager.getConnection("jdbc:sqlite:~/workspace/POEC/Data/films.sqlite");
        connectionDB.setAutoCommit(false);

        /* Begin of statements */
        /* Here are use statements */
        /* End of statements*/

        connectionDB.commit();
        connectionDB.close();

    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    }
}

Пример выражения:

public static void exampleOfStatementTest(Connection conn) throws SQLException {
    String createFilmsTableQuery = "CREATE  TABLE  IF NOT EXISTS films" + "("
            + " filmId INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE ," + " filmTitle TEXT,"
            + " filmDirector TEXT," + " filmType TEXT," + " filmYear INTEGER " + ");";
    try (Statement statement = conn.createStatement()) {
        statement.execute(createFilmsTableQuery);
        statement.close();
    }
}

Пример PrepareStatement :

private static void exampleOfPrepareStatementTest(Connection conn) throws SQLException {
    String insertIntoFilmsPrepareStatementQuery = "INSERT INTO films "
            + "(filmTitle, filmDirector, filmType, filmyear) " + "VALUES (? ,? ,? ,? )";
    try (Statement st = conn.createStatement()) {
        PreparedStatement preparedStatement = conn.prepareStatement(insertIntoFilmsPrepareStatementQuery);
        preparedStatement.setString(1, "Jackie Brown");
        preparedStatement.setString(2, "Tarentino");
        preparedStatement.setString(3, "detective film");
        preparedStatement.setInt(4, 1997);
        int filmAddedQuantity = preparedStatement.executeUpdate();
        System.out.println(filmAddedQuantity + " Film(s) added");
        preparedStatement.close();
        st.close();
    }
}
0 голосов
/ 25 февраля 2011

DriverManager (или DataSource ) является вашей отправной точкой - получите от него Соединение и т. Д. Вам не нужно напрямую создавать какие-либо из них.

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