1

WAMPで作成されたデータベースに接続したい。これは、WAMPでSQLBuddyを使用して作成したSQLデータベースです。

コードを実行すると、次のように表示されました

SEVERE: javax.naming.NameAlreadyBoundException: Use rebind to override

asadminコマンドを使用して、GlassfishのJNDIネーミングを無効にする必要があることがわかりました。これは、一度は機能しましたが、同じエラーが表示されました。

public Connection DbConnection(){

                        Connection con = null;
                        DataSource ds = new DataSource();
                        ds.setDatabaseName("mydatabase");
                        ds.setDescription("Authorization");
                        Context ctx = new InitialContext();
                        ctx.bind("jdbc/mydatabase", ds);
                        ds.getConnection("root", "");
                        return con;
}

public void myStatement(){

                   PreparedStatement pst;
                   Connection conn = DbConnection();   
                   conn.setAutoCommit(false);
                   pst = conn.prepareStatement("Select *" +
                                               " from Member WHERE Username = ? ");
                   pst.setString(1, username);
                   conn.commit();
                   pst.close();   
}
4

1 に答える 1

1

値を返さないため、関数 DbConnection() は null を返します。Connection インスタンスも作成しません。DataSource を手動で作成している場合は、それを jndi にバインドする必要はありません。

DataSource を作成している場合は、DataSource オブジェクトから (その getConnection() メソッドを介して) Connection を取得します。

于 2013-02-11T04:24:49.113 に答える