// int rowCount = getRowCount(RS);  //得到记录集的行数。
  public int getRowCount(ResultSet RS)
  {
          int rowCount = 0;
          try
          {
                  String rowStatus = "";
                  int preRow = 0;
                  if (RS.isBeforeFirst())
                  {
                          rowStatus = "isBeforeFirst";
                  }
                  else
                  {
                          if (RS.isAfterLast())
                          {
                                  rowStatus = "isAfterLast";
                          }
                          else
                          {
                                  rowStatus = "normal";
                                  preRow = RS.getRow();
                          }
                  }                  RS.last();
                  rowCount = RS.getRow();
                  if (rowStatus.equals("isBeforeFirst"))
                  {
                          RS.beforeFirst();
                  }
                  else
                  {
                          if (rowStatus.equals("isAfterLast"))
                          {
                                  RS.afterLast();
                          }
                          else
                          {
                                  RS.absolute(preRow);
                          }
                  }
          }
          catch(SQLException e)
          {
                  rowCount = -1;
          }
          return rowCount;
  }

解决方案 »

  1.   

    不是要得到记录数,而是用table方式显示记录集的通用函数
      

  2.   

    import java.sql.*;
    import java.io.*;
    import javax.servlet.http.HttpServletResponse;
    import com.bjjs.General.Database.*;
    import com.bjjs.General.Tools.Error;
    import java.util.*;/**
     * <p>Title:通用数据库数据操作类 </p>
     * <p>Description: 对给定的数据库数据操作,包括添加、删除等</p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Company:p>
     * @author 
     * @version 1.0
     */public class DataCtrl {
      private String[][] dataHeader;//数据库字段名及字段显示名称
      private String tableName;//要操作的数据表名
      private ResultSet rs;//查询出的记录集
      private PrintWriter out;//要写出的网页out对象
      private int colCount;//列数量
      private String query;//查询语句
      private String updateString = "";//更新语句
      public Vector dataFields = new Vector();//字段树形集合  /**
       * 构造函数
       */
      public DataCtrl() {  }  /**
       * 构造DataCtrl对象,并初始化
       *
       * @param tableName 要操作的表名
       * @param s 字段名及字段显示名
       * @param response 要输出网页的response对象
       */
      public DataCtrl(String tableName, String[][] s, HttpServletResponse response) {
        this.tableName = tableName;
        this.dataHeader = s;
        this.colCount = s.length;
        try {
          this.out = response.getWriter();
        }
        catch (Exception e) {}    query = "select ";
        for (int i = 0; i < this.colCount; i++) {
          if (i == 0) {
            query = query + s[i][0];
          }
          else {
            query = query + "," + s[i][0];
          }
        }
        query = query + " from " + this.tableName;
        Database db = new Database();
        this.rs = db.select(query);    try {
          ResultSetMetaData meta = rs.getMetaData();
          DatabaseField dbField = null;
          for (int i = 0; i < this.colCount; i++) {
            dbField.setFieldName(meta.getColumnName(i + 1));
            dbField.setFieldType(meta.getColumnTypeName(i + 1));
            dbField.setFieldSize(meta.getColumnDisplaySize(i + 1));
            dataFields.add(dbField);
          }
        }
        catch (Exception e) {}
      }  /**
       * 设置DataCtrl对象属性
       *
       * @param tableName 要操作的表名
       * @param s 字段名及字段显示名
       * @param response 要输出网页的response 对象
       */
      public void setDataCtrlInfo(String tableName, String[][] s,
                                  HttpServletResponse response) {
        this.tableName = tableName;
        this.dataHeader = s;
        this.colCount = s.length;
        try {
          this.out = response.getWriter();
        }
        catch (Exception e) {}    query = "select ";
        for (int i = 0; i < this.colCount; i++) {
          if (i == 0) {
            query = query + s[i][0];
          }
          else {
            query = query + "," + s[i][0];
          }
        }
        query = query + " from " + this.tableName;
        Database db = new Database();
        this.rs = db.select(query);    try {
          ResultSetMetaData meta = rs.getMetaData();
          DatabaseField dbField = null;
          for (int i = 0; i < this.colCount; i++) {
            dbField = new DatabaseField(meta.getColumnName(i + 1),
                                        meta.getColumnTypeName(i + 1),
                                        meta.getColumnDisplaySize(i + 1));
            dataFields.add(dbField);
          }
        }
        catch (Exception e) {}
      }
      

  3.   

    /**
       * 取得数据库记录集
       *
       * @return rs 数据库记录集
       */
      public ResultSet getRs() {
        return rs;
      }  /**
       * 设置输出网页的out对象
       *
       * @param response 输出网页的response 对象
       */
      public void setOut(HttpServletResponse response) {
        try {
          this.out = response.getWriter();
        }
        catch (Exception e) {
        }
      }  /**
       * 取得字段数目
       *
       * @return 字段数
       */
      public int getColCount() {
        return this.dataHeader.length;
      }  /**
       * 在网页上输出数据表格
       */
      public void drawTable() {
        out.println("<table width=\"98%\" border=\"1\">");
        out.println("<tr bgcolor=\"#E9DCD8\">");
        for (int i = 0; i < this.colCount; i++) {
          out.println("<td align=\"center\">" + dataHeader[i][1] + "</td>");
        }
        out.println("<td>&nbsp;</td>");
        out.println("<td>&nbsp;</td>");
        out.println("</tr>");
        try {
          while (rs.next()) {
            out.println("<tr>");
            for (int i = 0; i < this.colCount; i++) {
              out.println("<td>" + rs.getString(i + 1) + "</td>");
            }
            out.println(
                "<td><input type=\"button\" name=\"edit\" value=\"编辑\" onclick=\"datactrl(1,'" +
                rs.getString(1) + "','" + dataHeader[0][0] + "','" + this.tableName +
                "')\"></td>");
            out.println(
                "<td><input type=\"button\" name=\"delete\" value=\"删除\" onclick=\"datactrl(2,'" +
                rs.getString(1) + "','" + dataHeader[0][0] + "','" + this.tableName +
                "')\"></td>");
            out.println("</tr>");
          }
          rs.close();
        }
        catch (Exception e) {
        }
        out.println("</table>");
      }  /**
       * 在网页上输出数据编辑表格
       *
       * @param searchValue 要编辑的字段值
       * @param response 要输出网页的response 对象
       */
      public void drawEditTable(String searchValue, HttpServletResponse response) {
        String query2 = query + " where " + dataHeader[0][0] + "='" + searchValue +
            "'";
        Database db2 = new Database();
        ResultSet rs2 = db2.select(query2);
        try {
          PrintWriter o = response.getWriter();
          if (rs2.next()) {
            o.println("<table width=\"98%\" border=\"1\">");
            for (int i = 0; i < this.colCount; i++) {
              o.println("<tr>");
              o.println("<td bgcolor=\"#E9DCD8\">" + dataHeader[i][1] + "</td>");
              o.println("<td><input type=\"text\" name=\"" + dataHeader[i][0] +
                        "\" value=\"" + rs2.getString(i + 1) + "\" " +
                        ( (i == 0) ? "readonly" : "") + "></td>");
              o.println("</tr>");
            }
            o.println("</table>");
          }
          rs2.close();
          db2.close();
        }
        catch (Exception e) {}
      }  /**
       * 输出数据添加表格
       *
       * @param response 要输出网页的response 对象
       */
      public void drawAppendTable(HttpServletResponse response) {
        try {
          PrintWriter o = response.getWriter();
          o.println("<table width=\"95%\" border=\"1\">");
          for (int i = 0; i < this.colCount; i++) {
            o.println("<tr>");
            o.println("<td bgcolor=\"#E9DCD8\" width=\"100\">" + dataHeader[i][1] +
                      "</td>");
            o.println("<td><input type=\"text\" name=\"" + dataHeader[i][0] +
                      "\" value=\"\" size=\"" +
                      ( (this.getDataFields(i).getFieldSize() < 60) ?
                       (this.getDataFields(i).getFieldSize()) : 60) +
                      "\" maxlength=\"" + this.getDataFields(i).getFieldSize() +
                      "\"></td>");
            o.println("</tr>");
          }
          o.println("</table>");
        }
        catch (Exception e) {}
      }  /**
       * 在数据库中插入数据
       *
       * @param dbConn 使用的数据库连接对象
       * @param values 要插入的数据库值列表
       *
       * @return 执行结果
       */
      public int insertData(Database dbConn, String[] values) {
        updateString = "insert into " + this.tableName + " (";
        for (int i = 0; i < this.colCount; i++) {
          if (i == 0) {
            updateString = updateString + this.dataHeader[i][0];
          }
          else {
            updateString = updateString + "," + this.dataHeader[i][0];
          }
        }
        updateString = updateString + ") values(";
        for (int i = 0; i < this.colCount; i++) {
          String fieldType = this.getDataFields(i).getFieldType();
          if (fieldType.equalsIgnoreCase("number")) {
            updateString = updateString + values[i] +
                ( (i < this.colCount - 1) ? "," : "");
          }
          else {
            updateString = updateString + "'" + values[i] + "'" +
                ( (i < this.colCount - 1) ? "," : "");
          }
        }
        updateString = updateString + ")";    return dbConn.insert(updateString);
      }  /**
       * 删除数据
       *
       * @param dbConn 使用的数据库连接对象
       * @param values 要删除的数据库值列表
       *
       * @return 执行结果
       */
      public int deleteData(Database dbConn, String[] values) {
        updateString = "delete from " + this.tableName + " where " +
            this.dataHeader[0][0] + "=";
        if (this.getDataFields(0).getFieldType().equalsIgnoreCase("number")) {
          updateString = updateString + values[0];
        }
        else {
          updateString = updateString + "'" + values[0] + "'";    }
        return dbConn.delete(updateString);
      }  /**
       * 取得指定的数据库字段属性
       *
       * @param i 字段顺序号
       *
       * @return 返回对应的DatabaseField对象
       */
      public DatabaseField getDataFields(int i) {
        return (DatabaseField)this.dataFields.get(i);
      }  /**
       * 取得数据库字段名及字段显示名成
       *
       * @return 字段名及显示名二维数组
       */
      public String[][] getDataHeader() {
        return dataHeader;
      }  /**
       * 取得更新数据库字符串
       *
       * @return 更新数据库字符串
       */
      public String getUpdateString() {
        return updateString;
      }
    }
      

  4.   

    /**
     * <p>Title:数据库子段对象 </p>
     * <p>Description: 描述了数据库字段对应的属性及相关的方法</p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Company: </p>
     * @author 
     * @version 1.0
     */public class DatabaseField{
      private String fieldName;//字段名
      private String fieldType;//字段类型
      private int fieldSize;//字段长度  /**
       * 构造DatabaseField对象,并初始化
       *
       * @param fieldName 字段名称
       * @param fieldType 字段类型
       * @param fieldSize 字段长度
       */
      public DatabaseField(String fieldName,String fieldType,int fieldSize){
        this.fieldName=fieldName;
        this.fieldType=fieldType;
        this.fieldSize=fieldSize;
      }  /**
       * 取得字段名称
       *
       * @return fieldName 字段名称
       */
      public String getFieldName(){
        return this.fieldName;
      }  /**
       * 设置字段名称
       *
       * @param fieldName 字段名称
       */
      public void setFieldName(String fieldName){
        this.fieldName=fieldName;
      }  /**
       * 取得字段类型
       *
       * @return fieldType 字段类型
       */
      public String getFieldType(){
        return this.fieldType;
      }  /**
       * 设置字段类型
       *
       * @param fieldType 字段类型
       */
      public void setFieldType(String fieldType){
        this.fieldType=fieldType;
      }  /**
       * 取得字段长度
       *
       * @return fieldSize 字段长度
       */
      public int getFieldSize(){
        return this.fieldSize;
      }  /**
       * 设置字段长度
       *
       * @param fieldSize 字段长度
       */
      public void setFieldSize(int fieldSize){
        this.fieldSize=fieldSize;
      }
    }
      

  5.   

    to:wy7861
    可否给个调用方法事例
      

  6.   

    String[][] s={{"id","编号"},{"name","名称"},{"type","型号"}};
    DataCtrl dataCtrl=new DataCtrl();
    dataCtrl.setDataCtrlInfo(TABLE_NAME,s,response);
    dataCtrl.drawTable();
      

  7.   

    import com.bjjs.General.Database.*;
    import com.bjjs.General.Tools.Error;
    这个包在哪里
      

  8.   

    import com.bjjs.General.Database.*;
    是数据库操作的包,用你自己的好了~~import com.bjjs.General.Tools.Error;
    是错误处理的包,也是用你自己的好了~~
      

  9.   

    我用这个import com.borland.dx.sql.dataset.*;
    不行
      

  10.   

    com.bjjs.General.Database.*;只是我自己做的连接数据库的类,你完全可以不用,自己连接数据库就行了嘛~~~