java - 使用 JDBC 连接到 Derby

标签 java jdbc derby

我正在尝试使用 JDBC 连接到我的 locahost 上的 Derby 数据库。

我已使用以下命令启动数据库:java -jar lib;derbyrun.jar server start,该命令在端口 1527 上成功启动。

在另一个命令终端上,我使用命令:java -classpath .;lib;derbyclient.jar testsqldatabase.TestSQLDatabase 但出现以下错误:

java.sql.SQLException: No suitable driver found for jdbc:postgresql:COREJAVA
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at testsqldatabase.TestSQLDatabase.getConnection(TestSQLDatabase.jav
)
        at testsqldatabase.TestSQLDatabase.runTest(TestSQLDatabase.java:39)
        at testsqldatabase.TestSQLDatabase.main(TestSQLDatabase.java:26)

我的datatbase.properties文件包含以下几行:

jdbc.drivers=org.postgresql.Driver
jdbc.url=jdbc:postgresql:COREJAVA
jdbc.username=dbuser
jdbc.password=secret

java程序如下:

public class TestSQLDatabase 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException
    {
        try
        {
            runTest();
        }
        catch(SQLException ex)
        {
            for(Throwable t: ex)
                t.printStackTrace();
        }
    }
    /*Runs a test by creating a table, adding a value, 
    showing the table contents, removing the table*/

    public static void runTest() throws SQLException, IOException
    {
        try(Connection conn = getConnection())
        {
            Statement stat = conn.createStatement();

            stat.executeUpdate("CTEATE TABLE Greetings (Message CHAR(20))");
            stat.executeUpdate("INSERT INTO Greetings VALUES ('Hello, World!')");

            try(ResultSet result = stat.executeQuery("SELECT * FROM Greetings"))
            {
                if(result.next())
                    System.out.println(result.getString(1));
            }
            stat.executeUpdate("DROP TABLE Greetings");
        }
    }

    /*
     * Gets a connection from the properties specified in the 
     * file database.properties. @return the database connection
     */
    public static Connection getConnection() throws SQLException, IOException
    {
        Properties props = new Properties();
        try(InputStream in = Files.newInputStream(Paths.get("database.properties")))
        {
            props.load(in);
        }
        String drivers = props.getProperty("jdbc.drivers");
        if(drivers != null) System.setProperty("jdbc.drivers", drivers);
        String url = props.getProperty("jdbc.url");
        String username = props.getProperty("jdbc.username");
        String password = props.getProperty("jdbc.password");

        return DriverManager.getConnection(url, username, password);
    }
}

有人能弄清楚为什么我从第二个命令终端收到该错误吗?

谢谢,非常感谢

最佳答案

Derby 是一个数据库。 PostgreSQL 是一个不同的数据库。您正在运行一个 Derby 数据库,并且需要相应的 Derby JDBC 驱动程序来与其通信 - 而不是 PostgreSQL 驱动程序。

关于java - 使用 JDBC 连接到 Derby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107260/

相关文章:

java - 在 POJO 中验证 JSON

java - java 8 设置中捆绑的 JavaDB

java - DerbyPreparedStatement 不会在 XMLEXISTS 函数内注入(inject)参数

java - 将 Derby 数据库导出为 sql 文件

java - 如何使用 spring 表单标签访问 arraylist 的属性?

java - 将服务逻辑与数据分离

java - 记录 net.sf.json.xml.XMLSerializer getType

java - Oracle jdbc 编号无效

oracle - 如果使用 Oracle 钱包,正确的 JDBC URL 语法是什么?

java - 如何删除java derby数据库中的空数据?