1

我正在使用带有 IBM 工具箱的 JDBC 来连接到 AS400 服务器上的表。当我建立连接时,我没有向 URL 提供用户名或密码,因此我希望系统提示用户。我不想硬编码任何密码或自动输入管理员密码。坏主意。所以很及时。我将所有其他设置推入一个属性对象并将其发送出去:

prop = setProperties(false, //ensure the server always prompts for logon information
                "","",SCHEMA);
connection = DriverManager.getConnection("jdbc:as400://" + IP_ADDRESS, prop);

我的属性设置函数如下所示:

private Properties setProperties(boolean local,String USER_ID,
        String PASSWORD,String SCHEMA)
{
    Properties prop = new Properties();
    prop.put("naming", "system");
    prop.put("errors", "full");
    prop.put("libraries", SCHEMA + ", *LIBL");
    if (!local) {
        prop.put("user", USER_ID);
        prop.put("password", PASSWORD);
    }
    return prop;
}  // serverProperties

因为我不提供 un 或 pw,所以我得到了这个漂亮的小盒子:

用户名/密码提示

  1. 这个盒子是哪里来的?这是 JDBC 的东西还是 IBM 工具箱的东西?我可以拦截它吗?我很想知道我是否可以剥皮。当我将这个项目从桌面翻译到 android 时,我希望能够生成一个 android UI(因为 android 不知道 swing 或 awt)。

  2. 如果我选中这两个复选框,无论我打开和关闭多少个连接,我在这些 un​​/pw 字段中输入的内容都会持续存在。有没有办法从某个地方获取 un/pw 数据?我尝试抓取连接属性对象,但所有字段对我来说都是空白的。IBM Toolbox 属性文档列出了预期的属性(我现在只对一般属性感兴趣),但实际上并没有告诉我在哪里可以检索这些属性。

这个

Properties prop = connection.getClientInfo();
System.out.print(prop.toString());

让我得到这个{ClientProgramID=, ClientUser=, ApplicationName=, ClientHostname=, ClientAccounting=} 甚至不接近我应该期待的。我不确定我的财产去哪儿了。

感谢您提供任何信息!

4

1 回答 1

1

这是连接 URL 中未提供显式用户或密码时的工具箱默认提示:

一般属性

如果您想要皮肤或以其他方式拥有更多控制权,您应该创建自己的自定义用户界面并在打开连接时指定用户和密码属性。

有关更多信息,请参阅IBM Toolbox for Java JDBC 属性

于 2013-07-25T22:08:54.983 回答