// 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;
}
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;
}
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) {}
}
* 取得数据库记录集
*
* @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> </td>");
out.println("<td> </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;
}
}
* <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;
}
}
可否给个调用方法事例
DataCtrl dataCtrl=new DataCtrl();
dataCtrl.setDataCtrlInfo(TABLE_NAME,s,response);
dataCtrl.drawTable();
import com.bjjs.General.Tools.Error;
这个包在哪里
是数据库操作的包,用你自己的好了~~import com.bjjs.General.Tools.Error;
是错误处理的包,也是用你自己的好了~~
不行