首先,我是Java/JSP/Eclipse
的新手。不過,我有很多年的.Net經驗。我剛剛在Java中學習瞭如何使用javax.sql.DataSource
連接到MS SQL Server(這樣我就不需要輸入用戶名/密碼)。Java JDBC連接池(如何檢查)?
現在,我創建了一個類來處理數據庫查詢,並且在那個類中,我有一個函數,我可以調用返回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
自動實現?但是,問題(我認爲)是我將(voConn.createStatement()).executeQuery(pvsSQLText)
從ResultSet
轉換爲JdbcRowSet
。這是否意味着使用的底層連接仍然是ResultSet
?而不是RowSet
? 有沒有辦法讓我檢查我確實在使用Connection Pooling?
對不起,如果我的問題聽起來很愚蠢。 Eclipse對於Java開發&非常新穎。請耐心等待,我會很感激你能爲我提供的任何指導。
我使用:sqljdbc4.jar
從Microsoft
(這似乎給我的錯誤,每當我打電話JdbcRowSet.execute()
功能和/或通過.next()函數趣談NullReference但是,這是另一個問題
謝謝!在連接池中獲得答案! 我可以總結一下: voRS =(RowSet)(proConnection.createStatement())。executeQuery(pvsSQLText); 會做詭計嗎?它會將ResultSet強制轉換爲RowSet? –
恩,對不起,我的錯誤,不是RowSet,當然應該是ResultSet。 executeQuery將始終返回ResultSet,您可以手動獲取它,它具有方法next()和各種類型的getter來讀取當前行值。 – user1516873
是的,我想到了ResultSet。再次。 –