【问题标题】:What is a best way to give connection string for derby database?为 derby 数据库提供连接字符串的最佳方法是什么?
【发布时间】:2016-04-11 12:35:48
【问题描述】:

我正在尝试连接 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”,但它给了我错误

架构“ROOT”不存在

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

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

【问题讨论】:

标签: java derby


【解决方案1】:

在 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

【讨论】:

猜你喜欢
  • 2010-09-24
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 2021-11-16
  • 2011-03-20
  • 2016-12-11
  • 2020-05-03
  • 1970-01-01
相关资源
最近更新 更多