0

まず第一に、私は初めてですJava/JSP/Eclipse。しかし、私は何年もの .Net 経験を積んできました。を使用して MS SQL Server に接続する方法を Java で学習したところですjavax.sql.DataSource(そのため、ユーザー ID/パスワードを入力する必要はありません)。

現在、DB クエリを処理するクラスを作成しました。そのクラスには、呼び出すだけでRowSet.

    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.sql.Connection;

    import javax.sql.DataSource;
    import javax.sql.rowset.JdbcRowSet;
    import com.sun.rowset.JdbcRowSetImpl;

    public abstract class ClsDBAccessBASE {
        public boolean prbAutoCommit = true;
        public String prsDataSourceName = "";

            public ClsDBAccessBASE( String pvsDataSourceName ) {
                    prsDataSourceName = pvsDataSourceName;
            }
            public JdbcRowSet fnorsSQLText( String pvsSQLText ) {
                JdbcRowSet voRS = null;

                try {
                    Context voContext = new InitialContext();
                    DataSource voDS = (DataSource)voContext.lookup(prsDataSourceName);
                    Connection voConn = (Connection)voDS.getConnection();
                    voRS = new JdbcRowSetImpl((voConn.createStatement()).executeQuery(pvsSQLText));
                } catch (Exception e) {e.printStackTrace();}

                return voRS;
            }
        }
    }

私の目的は、接続プールを使用していることを確認することです。JdbcRowSet自動的に実装することを理解していますか?ただし、問題は (私が思うに) を a から a にキャストしていること(voConn.createStatement()).executeQuery(pvsSQLText)です。これは、使用されている基になる接続がまだであることを意味しますか? ではありませんか?実際に接続プールを使用していることを確認する方法はありますか?ResultSetJdbcRowSetResultSetRowSet

私の質問がばかげているように聞こえる場合は、申し訳ありません。私はJava開発とEclipseの初心者です。どうぞご容赦ください。ご指導いただければ幸いです。

私が使用しています: sqljdbc4.jarfrom (関数や .next() 関数Microsoftを呼び出すたびにエラーが発生するようです。NullReference についての何か。しかし、それは別の問題です。JdbcRowSet.execute()

4

2 に答える 2

0

を得るJDBC connection object

 System.out.println(conn.getClass().getName());
于 2012-10-05T07:18:20.983 に答える
0

はい、コンテナー DataSource を使用すると、接続プールが自動的に実行されます。

接続プーリングは RowSet の実装に依存せず、使用後は RowSet を閉じる必要があります。プレーンオブジェクトの配列にすぐに読み込んで閉じることをお勧めします。JdbcRowSetImplを使用しないでくださいRowSet。十分です。

編集:私はあなたの質問に答えるのを忘れています:ループ内で getConnection を呼び出して select を実行し、閉じない ResultSetで、プールにある接続の数を確認してください。count open connection == 接続プールで構成されている max open connection に達すると、エラーが発生します。

于 2012-10-05T07:58:03.813 に答える