当前位置: 代码迷 >> Java Web开发 >> 各路大神帮帮忙,jsp+mysql+javabean的有关问题,小弟我想用javabean在jsp中查询mysql的表
  详细解决方案

各路大神帮帮忙,jsp+mysql+javabean的有关问题,小弟我想用javabean在jsp中查询mysql的表

热度:60   发布时间:2016-04-16 22:14:52.0
各路大神帮帮忙,jsp+mysql+javabean的问题,我想用javabean在jsp中查询mysql的表
我运行jsp时,页面总是显示的是javabean中抛出的异常(请输入正确的表名),不知道为什么老是查询不了。各路大神帮帮忙呀!
我的mysql中数据库名称叫wysj,里面有5个表,三个表有3列元素,两个表有五列元素。

javabean 源代码:

package database;
import java.sql.*;
public class MySqlBean {
String tableName="";
StringBuffer queryResult;
public MySqlBean(){
queryResult=new StringBuffer();
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){}
}
public void setQueryResult(StringBuffer queryResult) {
this.queryResult = queryResult;
}
public  void setTableName(String s){
tableName=s.trim();
queryResult=new StringBuffer();
}
public String getTableName(){
return tableName;
}
public StringBuffer getQueryResult(){
Connection con;
Statement sql;
ResultSet rs;
try{
queryResult.append("<table border=1>");
String url="jdbc:mysql://localhost/wysj";
String user="root";
String password="";
con=DriverManager.getConnection(url,user,password);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null,null,tableName,null);
int 字段个数=0;
queryResult.append("<tr>");
while(rs1.next()){
字段个数++;
String clumnName=rs1.getString(4);
queryResult.append("<td>"+clumnName+"</td>");
}
queryResult.append("</te>");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM"+tableName);
while(rs.next()){
queryResult.append("<tr>");
for(int k=1;k<=字段个数;k++){
queryResult.append("<td>"+rs.getString(k)+"</td>");
}
queryResult.append("</tr>");
}
queryResult.append("</table>");
con.close();
}
catch(SQLException e){
queryResult.append("请输入正确的表名");
}
return queryResult;
}
}


jsp的源代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="database.MySqlBean" %>
<jsp:useBean id="base" class="database.MySqlBean" scope="session"/>
<jsp:setProperty name="base" property="*" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>jsp</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

  <style type="text/css">
  #apDiv1 {
position:absolute;
width:439px;
height:115px;
z-index:1;
}
  </style>
  </head>
  
  <body>
  <FORM action="" Method="post">
  输入表名:
  <Input type=text name="dbname" size=10>
  <Input type=submit name="g" value="提交">
  </FORM>
  在<jsp:getProperty name="base" property="tableName"/>表查询到记录:
  <BR><jsp:getProperty name="base" property="queryResult"/>
</body>
</html>

------解决方案--------------------
  String url="jdbc:mysql://localhost/wysj";    好像没有端口名, 代码太乱了。去网上找demo看建议。
------解决方案--------------------
引用:
  String url="jdbc:mysql://localhost/wysj";    好像没有端口名, 代码太乱了。去网上找demo看建议。


没有端口  然后就是
 } catch(SQLException e){
            queryResult.append("请输入正确的表名");
 }

}catch(Exception e){
e.printStackTrace();
}
看看控制台  具体报的错。 也可以打断点一步一步查
------解决方案--------------------
楼主,在后台写个main方法先把 MySqlBean 里面的方法测试一遍,后台可以打断点,调试起来方便的多。
每次给 getQueryResult 不同的表名,跟着断点,看看 ResultSet rs1=metadata.getColumns(null,null,tableName,null); 这一步能否执行过去,跟下代码,看有什么问题,先把问题解决了。
前台jsp里面代码不方便调试。
------解决方案--------------------
"SELECT * FROM"+tableName 的 from 后面加一个空格。 你这样拼出来的是 select * from表名
  相关解决方案