Не найден подходящий драйвер для jdbc: derby - PullRequest
0 голосов
/ 13 ноября 2018

Я создаю простое веб-приложение HelloWorld.Я хочу использовать локальную базу данных derby.

мой pom:

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.14.1.0</version>
            <scope>test</scope>
        </dependency>

И класс обслуживания подключения MyDB, я хочу просто получить текст из таблицы и показать:

public void connecToDerby() throws SQLException{

        String dbUrl = "jdbc:derby:D:\\Projects\\JavaWebApplication\\FirstMavenProject; create=true";
        conn = DriverManager.getConnection(dbUrl);

    }

    public void initDb() throws SQLException {
        Statement statement = conn.createStatement();
        statement.executeUpdate("Create table welcometext(id int primary key, text varchar(100))");

        statement.executeUpdate("INSERT into welcometext values (1, 'Hello Java World')");
        statement.close();
    }

но я получил исключение:

java.sql.SQLException: No suitable driver found for jdbc:derby:D:\Projects\JavaWebApplication\FirstMavenProject; create=true

Как это решить?Правильно ли использовать местное дерби?Я работаю над Intelij IDEA.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Мой код здесь, это работает.может быть, вы потеряете Class.forName(JDBC_DRIVER_NAME);

    private static final String JDBC_DRIVER_NAME = "org.apache.derby.jdbc.EmbeddedDriver";
    private static final String NACOS_HOME = "D:\\nacos";
    private static final String DERBY_BASE_DIR = "data" + File.separator + "derby-data";
    private static final String USER_NAME = "nacos";
    private static final String PASSWORD = "nacos";

    static Connection conn = null;

    public static Connection getConnection() {
        if (conn==null){
            try {
                Class.forName(JDBC_DRIVER_NAME);
                String url = "jdbc:derby:" + NACOS_HOME + File.separator + DERBY_BASE_DIR + ";create=true";
                conn = DriverManager.getConnection(url, USER_NAME, PASSWORD);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return conn;
    }
0 голосов
/ 13 ноября 2018

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

  • Запустите Derby в сетевом режиме, затем используйте Class.forName("org.apache.derby.jdbc.ClientDriver");
  • Бег дерби во встроенном режиме Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

до получения соединения от DriverManager.

...