为derby数据库提供连接字符串的最佳方法是什么?

时间:2016-01-07 07:41:06

标签: java derby

我正在尝试连接derby数据库并向表中插入一些值。因为我使用了以下代码。

Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con=DriverManager.getConnection(
        "jdbc:derby://localhost:1527/raptor;create=true","root","root");
if (con != null) {
    System.out.println("Connected to database - mydb");
}
Statement st=con.createStatement();
String q="insert into VINOTH values(7)";

st.executeUpdate(q);

在上面的代码中,当调用getConnection方法时,我给数据库用户" root"和密码为" root",但它给了我错误

  

Schema' ROOT'不存在

实际上root是一个数据库用户,但它需要一个模式。为什么会这样?

如果我给" APP"而不是数据库用户" root"它工作正常。但我需要知道它为什么不占用我的用户名和密码。

1 个答案:

答案 0 :(得分:0)

在derby中启用身份验证并设置用户和密码。它将设置数据库级别身份验证。

Statement s = conn.createStatement();
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
            + "    'derby.connection.requireAuthentication', 'true')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
            + "    'derby.authentication.provider', 'BUILTIN')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
            + "    'derby.user.root', 'root')");
s.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(\n"
            + "    'derby.database.propertiesOnly', 'true')");

只需要设置一次。然后可以使用此URL访问您的数据库

"jdbc:derby://localhost:1527/raptor;create=true","root","root"

了解详情,

http://db.apache.org/derby/docs/10.11/security/cseccsecure42374.html