我正在使用带有 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,所以我得到了这个漂亮的小盒子:
这个盒子是哪里来的?这是 JDBC 的东西还是 IBM 工具箱的东西?我可以拦截它吗?我很想知道我是否可以剥皮。当我将这个项目从桌面翻译到 android 时,我希望能够生成一个 android UI(因为 android 不知道 swing 或 awt)。
如果我选中这两个复选框,无论我打开和关闭多少个连接,我在这些 un/pw 字段中输入的内容都会持续存在。有没有办法从某个地方获取 un/pw 数据?我尝试抓取连接属性对象,但所有字段对我来说都是空白的。IBM Toolbox 属性文档列出了预期的属性(我现在只对一般属性感兴趣),但实际上并没有告诉我在哪里可以检索这些属性。
这个
Properties prop = connection.getClientInfo();
System.out.print(prop.toString());
让我得到这个{ClientProgramID=, ClientUser=, ApplicationName=, ClientHostname=, ClientAccounting=}
甚至不接近我应该期待的。我不确定我的财产去哪儿了。
感谢您提供任何信息!