!!!高分!!!jsp调用javabean进行数据库查询

Example6_3.jsp<%@pagecontentType="text/html;charset=Gb2312"%><html><bodybgcolor="cyan... Example6_3.jsp

<%@ page contentType="text/html;charset=Gb2312" %>
<html>
<body bgcolor="cyan">
<font size="3">
<form action="inquire.jsp" Method="post">
输入数据源名:<Input type="text" name="dataSource" size="8">
输入表的名字:<Input type="text" name="tableName" size="8">
<br>
输入用户名:<Input type=text name="user" size=6>
输入密码:<Input type="password" name="password" size=6>
<br><Input type=submit name="g" value="提交">
</form>
</font>
</body>
</html>
/////////////////////////////////////////////////////////////

inquire.jsp

<%@ page contentType="text/html;charset=Gb2312" %>
<%@ page import="sqljoin.my.*" %>
<html>
<body bgcolor=cyan>
<font size=2>
<%
String dSource=request.getParameter("dataSource");
String tName=request.getParameter("tableName");
String id=request.getParameter("user");
String secret=request.getParameter("password");
%>
<jsp:useBean id="sq" class="sqljoin.my.Qurey" scope="page"/>
<table>
<%%>
</table>
</font>
</body>
</html>

///////////////////////////////////////////////////////
javabean的文件不会写
package sqljoin.my;
import java.io.*;
import java.sql.*;
这是我建的包 我看书上用的是Tag标签来实现这个功能的,我也看懂了,但要求用javabean来实现,我就不太会改了
这是tag得代码,我知道就就稍微改动改动就行

<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.sql.*"%>
<%@ attribute name="dataSource" required="true" %>
<%@ attribute name="tableName" required="true" %>
<%@ attribute name="user" required="true" %>
<%@ attribute name="password" required="true" %>
<%@ variable name-given="biao" scope="AT_END" %>
<%@ variable name-given="queryResult" scope="AT_END" %>
<%
StringBuffer result;
result=new StringBuffer();
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception e){}
Connection con;
Statement sql;
ResultSet rs;
try
{
result.append("<table border=1>");
String uri = "jdbc:odbc:" + dataSource;
con=DriverManager.getConnection(uri,user,password);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1 = metadata.getColumns(null,null,tableName,null);
int ziduan = 0;
result.append("<tr>");
while(rs1.next())
{
ziduan++;
String clumnName = rs1.getString(4);
result.append("<td>" + clumnName + "</td>");
}
result.append("<tr>");
sql = con.createStatement();
rs = sql.executeQuery("SELECT * FROM " + tableName);
while(rs.next())
{
result.append("<tr>");
for(int k = 1; k < ziduan;k++)
{
result.append("<td>" + rs.getString(k) + "</td>");
}
result.append("</tr>");
}
result.append("</table>");
con.close();
}
catch(SQLException e)
{
result.append("请输入正确的用户名和密码");
}
jspContext.setAttribute("queryResult",new String(result));
jspContext.setAttribute("biao",tableName);
%>

中间有些我改动了,大体没怎么变,高手们看仔细些吧,谢谢了
后台是动态的,我要可以查询不同的表
我用的是JDBC-ODBC连接的数据源的密码我没有设置,那个用户名,密码不用管,最主要是tableName这个值,怎么传到JAVABEAN里,这里我不太会,最好把BEAN从头写好,谢谢。Eclipse我都调好了,文件夹这点肯定没问题
展开
 我来答
dugufeiying123
2010-03-11 · TA获得超过289个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:218万
展开全部
这个页面中我只是返回了一个string类型的变量,如果你需要返回更多那个就简单了,这个只是一个例子
inquire.jsp

<%@ page contentType="text/html;charset=Gb2312" %>
<%@ page import="sqljoin.my.*" %>
<html>
<body bgcolor=cyan>
<font size=2>
<%
String dSource=request.getParameter("dataSource");
String tName=request.getParameter("tableName");
String id=request.getParameter("user");
String secret=request.getParameter("password");
%>
<jsp:useBean id="sq" class="test.JavaBean" scope="page"/>
<table>
<%=sq.RessultString(tName,dSource,id,secret)%>
</table>
</font>
</body>
</html>

javabean的代码就这样写,这里我用的是mysql,你可以换成其他的,值得注意的是,如果你用是我的数据库,还要把驱动包考到\WEB-INF\lib下面,
package test;
import java.sql.DriverManager;
import java.sql.ResultSet;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;

/**
*
*/

/**
* @author chenchua
*
*/
public class JavaBean {

public static String RessultString(String table,String dataSourse,String user,String password){
String clumnName=null;

StringBuffer result;
result=new StringBuffer();
try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){}
Connection con;
try
{

String uri = "jdbc:mysql://127.0.0.1:3306/"+dataSourse+"?user="+user+"&password="+password;
con=(Connection)DriverManager.getConnection(uri);
Statement state=(Statement)con.createStatement();
ResultSet rs1 = state.executeQuery("select * from "+table);

while(rs1.next()){

clumnName = rs1.getString("id");
}
}catch(Exception ex){
ex.printStackTrace();
return "数据库连接失败";
}
return clumnName;
}
}

如果有任何问题都可以给我留言!!

如果用的是access改下驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dburl ="jdbc:odbc:driver="+dataSourse+"?user="+user+"&password="+password;

jdbc:odbc:driver =此为NO-DSN方式
***********************
此外你还要设置,控制面板->管理工具->datasource里面去添加一个你建好的表,密码也可以设定,

你可以再eclipse里面直接测试,如果成功了然后在去运行,测试代码
public static void main(String args[]){

System.out.print(RessultString(table,dataSourse,user,password));

}
如果测试通过了才去运行,我的反正已经通过了,如果你不通过你应该去看看JDBC是怎么连的,只能给你说成这样了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dcpromowang
2010-03-10 · TA获得超过907个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:458万
展开全部
有FORM类就直接 form.getXXXX().来取得你表单里的数据。
没有 .getParameter(...) 去表单单数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式