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. これらの 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 に答える