我的关于数据库连接的JAVABEAN代码是:
QueryBeanOne.java:
package tom;
import java.sql.*;
public class QueryBeanOne {
String ODBCDataSource="";
String tableName="";
String user="";
String secret="";
StringBuffer queryResult;
public QueryBeanOne(){
StringBuffer queryResult = new StringBuffer();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
queryResult=new StringBuffer();
queryResult.append(" "+e);
}
}
public void setODBCDataSource(String s){
ODBCDataSource = s.trim();
}
public String getODBCDataSource(){
return ODBCDataSource;
}
public void setTableName(String s){
tableName=s.trim();
}
public String getTableName(){
return tableName;
}
public void setSecret(String s){
secret=s.trim();
}
public String getSecret(){
return secret;
}
public void setUser(String s){
user=s.trim();
}
public String getUser(){
return user;
}
public StringBuffer getQueryResult(){
Connection con;
Statement sql;
ResultSet rs;
try{
queryResult.append("<table border=1>");
String source="jdbc:odbc:"+ODBCDataSource;
String id=user;
String password=secret;
con=DriverManager.getConnection(source,id,password);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null, null,tableName, null);
int count=0;
queryResult.append("<tr>");
while(rs1.next()){
count++;
String clumnName=rs1.getString(4);
queryResult.append("<td>+clumnName+</td>");
}
queryResult.append("</tr>");
sql=con.createStatement();
rs=sql.executeQuery("select * form "+tableName);
while(rs.next()){
queryResult.append("<tr>");
for(int k=1;k<=count;k++){
queryResult.append("<td>"+rs.getString(k)+"</td>");
}
queryResult.append("</tr>");
}
queryResult.append("</table>");
con.close();
}catch(SQLException e){ queryResult.append(e);}
queryResult=new StringBuffer("212121");
return queryResult;
}
}
经过验证,前面的传数都不错,感觉是getQueryResult()里面有问题。每当在JSP文件里面要用
out.println("QueryResult"+database.getQueryResult());时,就会出问题。删去这个句就好了。
相关jsp文件是:
<%@ page contentType="text/html; charset=gb2312" %>
<%@page import="tom.QueryBeanOne"%>
<jsp:useBean id="database" class="tom.QueryBeanOne" scope="request"/>
<jsp:setProperty name="database" property="*"/>
<html>
<head><title>无标题文档</title>
</head><body>
<jsp:getProperty name="database" property="tableName"/>表查询到记录<br/>
<%
out.println("QueryResult"+database.getQueryResult());
%>
</body>
</html>
错误提示是:
description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /inquireOne.jsp at line 14请大牛解答。谢谢。
QueryBeanOne.java:
package tom;
import java.sql.*;
public class QueryBeanOne {
String ODBCDataSource="";
String tableName="";
String user="";
String secret="";
StringBuffer queryResult;
public QueryBeanOne(){
StringBuffer queryResult = new StringBuffer();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
queryResult=new StringBuffer();
queryResult.append(" "+e);
}
}
public void setODBCDataSource(String s){
ODBCDataSource = s.trim();
}
public String getODBCDataSource(){
return ODBCDataSource;
}
public void setTableName(String s){
tableName=s.trim();
}
public String getTableName(){
return tableName;
}
public void setSecret(String s){
secret=s.trim();
}
public String getSecret(){
return secret;
}
public void setUser(String s){
user=s.trim();
}
public String getUser(){
return user;
}
public StringBuffer getQueryResult(){
Connection con;
Statement sql;
ResultSet rs;
try{
queryResult.append("<table border=1>");
String source="jdbc:odbc:"+ODBCDataSource;
String id=user;
String password=secret;
con=DriverManager.getConnection(source,id,password);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null, null,tableName, null);
int count=0;
queryResult.append("<tr>");
while(rs1.next()){
count++;
String clumnName=rs1.getString(4);
queryResult.append("<td>+clumnName+</td>");
}
queryResult.append("</tr>");
sql=con.createStatement();
rs=sql.executeQuery("select * form "+tableName);
while(rs.next()){
queryResult.append("<tr>");
for(int k=1;k<=count;k++){
queryResult.append("<td>"+rs.getString(k)+"</td>");
}
queryResult.append("</tr>");
}
queryResult.append("</table>");
con.close();
}catch(SQLException e){ queryResult.append(e);}
queryResult=new StringBuffer("212121");
return queryResult;
}
}
经过验证,前面的传数都不错,感觉是getQueryResult()里面有问题。每当在JSP文件里面要用
out.println("QueryResult"+database.getQueryResult());时,就会出问题。删去这个句就好了。
相关jsp文件是:
<%@ page contentType="text/html; charset=gb2312" %>
<%@page import="tom.QueryBeanOne"%>
<jsp:useBean id="database" class="tom.QueryBeanOne" scope="request"/>
<jsp:setProperty name="database" property="*"/>
<html>
<head><title>无标题文档</title>
</head><body>
<jsp:getProperty name="database" property="tableName"/>表查询到记录<br/>
<%
out.println("QueryResult"+database.getQueryResult());
%>
</body>
</html>
错误提示是:
description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /inquireOne.jsp at line 14请大牛解答。谢谢。
应该放在catch体外面。
2.out.println("QueryResult"+database.getQueryResult().toString());
3.应该把QueryBeanOne类改为Servlet类。
我这是书的一个例子,是个JAVABEAN的。
唉。。