其實先聲明我也是個新手,只是在這個問題的解決上我花了很多時間,走了很多彎路,所以不想讓大家也像我一樣了
一般來說,為了方便開發和代碼重用,JSP中串連資料庫的代碼是單獨放在一個BEAN中的(至少我是這麼做的),就像ASP中有個專門用於資料庫連接的ASP檔案一樣。
以下是我寫的資料庫查詢函數:
public ResultSet dbQuery(String strSql){
rs=null;
try{
conn=DriverManager.getConnection(dbConn);
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(strSql);
}
catch(SQLException e){
System.err.println("Can not open the DB!/n");
System.err.println(e.getMessage());
}
return rs;
}
以前如果有和我一樣習慣的人可要注意了。
發現這個問題之前我寫的查詢函數並沒有傳回值,而總是將直接使用。哪知卻犯了一個很大而且很可笑的錯誤:返回的居然是一個NULL!!
細細想來,應該是局部變數的原因。嗯,確實有點打擊人。以下是正確的代碼應用:
<jsp:useBean id="db" class="dingsea.dbOperat" scope="page"/>
<%
ResultSet rs=db.dbQuery("select * from man");
try{
while(rs.next()){
out.println(rs.getString("id")+":");
out.println(rs.getString("name")+" | ");
out.println(rs.getString("tel")+" |"+"<br>");
}
}
catch(Exception e){
out.println(e.getMessage()+"/n");
}
rs.close();
%>