我的问题是由一个小小的空格引起的。
在用JavaBean连接数据库时,遇到了一个问题,运行的时候只jsp页面只能显示出表头,无法读取数据库中表格数据。我对着教材检查了无数遍,硬是没发现哪里不对,今天终于发现问题所在了。
我的JavaBean:/*QueryBean.java*/
package tom.jiafei;
import java.sql.*;
public class QueryBean {
String databaseName="";
String tableName="";
String user="";
String secret="";
StringBuffer queryResult;
public QueryBean(){
queryResult=new StringBuffer();
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(Exception e){}
}
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName.trim();
queryResult=new StringBuffer();
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName.trim();
queryResult=new StringBuffer();
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user.trim();
queryResult=new StringBuffer();
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret.trim();
queryResult=new StringBuffer();
}
public StringBuffer getQueryResult() {
Connection con;
Statement sql;
ResultSet rs;
try {
queryResult.append("<table border=1>");
String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+databaseName;
String id=user;
String password=secret;
con=DriverManager.getConnection(uri,id,password);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null, null, tableName, null);//将表的字段信息存储在一个ResultSet对象中;
int z=0;
queryResult.append("<tr>");
while(rs1.next()){
z++;
String clumnName=rs1.getString(4);
queryResult.append("<td>"+clumnName+"</td>");
}
queryResult.append("</tr>");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM"+tableName);//问题就出在这里,注意FROM后面一定要留个空格,不然SQL语句就成了:SELECT * FROMtableName 从而无法运行
while(rs.next()){
queryResult.append("<tr>");
for(int k=1;k<=z;k++){
queryResult.append("<td>"+rs.getString(k)+"</td>");
}
queryResult.append("</tr>");
}
queryResult.append("</table>");
con.close();
}
catch(SQLException e){
queryResult.append("请输入正确的用户名和密码");
}
return queryResult;
}
}
我的jsp页面:/*inquire.jsp*/
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="tom.jiafei.QueryBean" %>
<jsp:useBean id="base" class="tom.jiafei.QueryBean" scope="session"/>
<jsp:setProperty name="base" property="*"/>
<html>
<body bgcolor=sdcv>
<FORM action="" method="post">
输入数据库名:<input type=text name="databaseName" size=8>
输入表的名字:<input type=text name="tableName" size=8>
<br>输入用户名:<input type=text name="user" size=6>
输入密码:<input type="password" name="secret" size=6>
<br><input type="submit" name="g" value="提交">
</FORM>
在<jsp:getProperty name="base" property="tableName"/>表中查询到记录:
<br><jsp:getProperty name="base" property="queryResult"/>
</body>
</html>
修改之前的运行结果如图: