你可以用resultset的metadata来得到列名,列数,这样就能控制输出了
解决方案 »
- 自己的WEB系统客户端调用另外一个WEB系统提供的Xfire+spring集成webservice接口遇到的问题
- struts 上传语音文件,后台怎么处理,找了很久没找到
- Hibernate 用Query对象查询时报in thread "main" java.lang.NoSuchMethodError: antlr.collec
- spring中的hibernate事务问题 急!
- 在线等,textarea改行显示(struts)
- 如何自动拉长和缩短页面表单字段的宽度
- 有人知道这个具体是怎么操作的吗?
- jsp如何访问access的问题
- 我是个初学者,大家帮帮忙。关于javabean
- 请教cookie和session的问题
- 一个关于servlet的问题
- 如何让繁体和简体在JSP中同时显示?紧急求助!
java.sql.ResultSetMetaData rsmd=rs.getMetaData();
int count=rsmd.getColumnCount();
out.print("<tr class='color-gridheader'>");
for(int i=1;i<=count;i++){
out.println("<td align='center' nowrap>"+rsmd.getColumnName(i)+"</td>");
}
out.println("</tr>");
int rows=0;
String td_style="#D3DDB6";
String active_color="#FFFFEE";
while(rs.next()){
rows++;
out.print("<tr onmouseout=\"chgBgColor('"+td_style+"',this)\" onmouseover=\"chgBgColor('"+active_color+"',this)\" bgcolor='"+td_style+"'>");
for(int i=1;i<=count;i++){
out.println("<td nowrap>"+rs.getString(rsmd.getColumnName(i))+"</td>");
}
out.println("</tr>");
td_style=(rows%2==0)?"#D3DDB6":"#E1E8C8";
}
out.println("<tr class='color-buttonbacking'><td colspan='"+count+"'>Total:"+rows+"</td></tr>");
的回答好经典.
不过这里的类:class='color-gridheader'是你自己写的吗?能不能把整个页面贴出来看看?
我是初学,能不能结合select * from table;
把代码写完?谢了。
package DBconn;
import java.sql.*;
public class DBconn {
String DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String ConnStr = "jdbc:odbc:Customer";
Connection conn = null;
ResultSet rs = null;
public DBconn() {
try {
Class.forName(DBDriver); }
catch (java.lang.ClassNotFoundException e) {
System.err.println("DBconn (): " + e.getMessage());
}
} public ResultSet executeQuery(String sql) {/*这是有返回值的,用来查询的方法*/
rs = null;
try {
conn = DriverManager.getConnection(ConnStr);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch (SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
return rs;
}
public void updateQuery(String sql) {/*这是没有返回值的用来修改,删除的方法*/
try {
conn = DriverManager.getConnection(ConnStr);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
conn.commit();
}
catch (SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
}
}接下来就是在jsp中调用这个bean了:
......
<BODY>
<jsp:useBean id="DBconn1" scope="page" class="work.DBconn"/>
<%--其中DBconn1是个随意起的名字,后面调用方法的时候会用到 work.DBconn是刚才bean的class所在的目录。
好了,现在可以调用你的数据库啦:) --%>
<%
先建立好接收数据库的变量:比如说你的数据库只有两个属性值:Id和Name
String getId;
String getName;
ResultSet rs = DBconn1.executeQuery("SELECT * FROM table");
while(rS.next()){
getId = rS.getString("Id");
getName = rS.getString("Name");
out.print(getId);
out.print(getName);
}
%>
</BODY>
......
这样应该就可以显示出来了。
<% java.sql.Connection sqlConn;
java.sql.Statement sqlStmt;
java.sql.ResultSet sqlRst;
//regiester jdbc driver
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
//connect to the database
sqlConn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://IP:1433;DatabaseName=datebase;SelectMethod=direct","sa","pswd");
//create the driver handle
sqlStmt=sqlConn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//excute sql sqlRst=sqlStmt.executeQuery("select top 10 * from tb_createid");
%>
<html>
<head>
<title>test jdbc driver</title>
</head>
<body>
<table border="1" cellspace ="0" align="center">
<tr>
<th>title </th> 1
<th>type </th>
<th>3</th>
</tr>
<% while(sqlRst.next()) {%>
<tr>
<td> <%=sqlRst.getString(1)%></td>
<td><%=sqlRst.getString(3)%></td>
<td> <%=sqlRst.getString(2)%></td>
</tr>
<%}%>
</table>
</body>
</html>
<%
sqlRst.close();
sqlStmt.close();
sqlConn.close();
%>
我对 javabean 这个不熟,也不知道怎么调用,你能不能把另个页面也写出来?
还有就是,事先并不知道数据库里有两个属性值:Id和Name
可能有3个,也可能有4个
所以肯定是用到for 和 while 的
以下这个Jsp代码是个例子,我也是拷贝过来的,自己好好看看,有注释的。<html>
<head><title>Add User to DB</title></head>
<%@page import="java.sql.*"%>
<body>
<pre>
<%
//Get parameters from request
String name,pwd;
name=request.getParameter("name");
pwd=request.getParameter("pwd");
try{
//add infomation to DB
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:jspTest");
Statement stmt=con.createStatement();
stmt.executeUpdate("insert into table values('"+name+"','"+pwd+"')");
//query DB for display all users
ResultSet rs=stmt.executeQuery("select * from table");
//rs.first();
out.println("All user in DB!");
while(rs.next()){
out.print("user name: ");
out.print(rs.getString("name")+" password: ");
out.println(rs.getString("password"));
}
//clear,must do it
rs.close();
stmt.close();
con.close();
}catch(Exception ex){
out.println(ex.getMessage());
}
%>
</pre>
</body>
</html>
谢谢你的代码,不过我还是想问你一下fantasygg(红尘一步)
如果我给你一个表,表名是table
请用表格的方式显示出来,怎么做?
如果你做得,那就是我所需要的了。
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@16.107.1.254:1521:oradb","system","manager");
Statement stmt = conn.createStatement ();
String sql = "select * from t00033";
java.sql.ResultSet rs=stmt.executeQuery(sql);
java.sql.ResultSetMetaData rsmd=rs.getMetaData();
int count=rsmd.getColumnCount();
%>
<table border="1">
<tr>
<%
for(int i=1;i<=count;i++){ %>
<td><%=rsmd.getColumnName(i)%></td>
<% } %>
</tr>
<%
int rows=0;
while(rs.next()){
rows++; %>
<tr>
<%
for(int j=1;j<=count;j++){ %>
<td><%=rs.getString(rsmd.getColumnName(j))%></td>
<%
}
} %>
</tr>
</table>
<%
}
catch(SQLException e) {
out.print(e.getMessage());
}
%>