javabean支持动态的二位数组吗?

fwwxxjingling 2004-03-16 01:41:40
javabean支持动态的二位数组吗?
我要用javabean存储数据集,但是不知道改如何返回给jsp页面,想通过二位数组,是否可以?
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jk3278jk 2004-03-16
  • 打赏
  • 举报
回复
package yearbook;
import java.sql.*;
import javax.naming.*;
import java.util.*;
/**
* <p>功能描述: 数据库基本操作类</p>
* <p>公司:金报兴图</p>
* <p>版权:2004<p>
* <p>创建日期:2004/02/20<p>
* <p>修改日期:2004/02/26<p>
* @author 王亮
* @version 1.1
*/

public class dba {
Connection conn = null;
Statement stmt = null ;
ResultSet rs = null;

int pageSize; //每页显示的记录数
int allRsCount; //记录总数
int allPageCount; //总页数
int page = 1; //转到的显示页码
int counti; //循环分页显示记录时,要使用的全局记数器变量
boolean pagingFlag=false; //是否分页的标记 默认为不分页
String sql; //sql数据操作,临时存放
public dba() {
}

/**打开数据库连接*/
public void open() {
try {

Context initCtx = new InitialContext();
if (initCtx==null) throw new Exception("不能获取Context!");
Context ctx = (Context) initCtx.lookup("java:comp/env");
//获取连接池对象
Object obj = (Object) ctx.lookup("jdbc/csgd");
//类型转换
javax.sql.DataSource ds = (javax.sql.DataSource) obj;
conn = ds.getConnection();
}
catch (Exception ex) {
this.close();
System.out.println("yearbook:dba:open():数据库打开失败!");
}
}

/**数据库查询(特殊用接口)*/
public ResultSet executeQueryA(String sql)
{
try {
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);

// System.out.println("测试A:" + sql);
}
catch (Exception e) {
this.close();
System.out.println("yearbook:dba:executeQueryA():数据库查询失败!");
System.out.println("sql语句为:"+sql);
}
return rs;
}
/**数据库的 查询 操作 */
public void executeQuery(String sql)
{
this.sql=sql;
}

/**真实数据库查询动作(本类内部自用函数))*/
void executeme(String sql)
{
try
{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
//System.out.println("测试:"+sql);
}catch(Exception e)
{
this.close();
System.out.println("yearbook:dba:executeme():数据库查询失败!");
System.out.println("sql语句为:"+sql);
}
}
/**返回数据库查询后的总记录数*/ //2004/02/26 最后修改!
public int getAllcount(String sql)
{
int rstmp=0;
ResultSet rsaa = this.executeQueryA(sql);
try
{
if (rsaa.next())
{
rsaa.last();
rstmp=rsaa.getRow(); //获取记录总数
if (rsaa!=null)
{
rsaa.close();
rsaa = null;
}
return rstmp;
}else
{
return 0;
}
}catch(Exception e)
{
this.close();
System.out.println("yearbook:dba:getAllcount():获取数据库总记录数出错!");
System.out.println("sql语句为:"+sql);
}finally
{
try
{
if (rsaa != null) {
rsaa.close();
rsaa = null;
}
}catch(Exception e){}
}
return rstmp;
/*final String sign = " FROM ";
int x = sql.toUpperCase().indexOf(sign);
String sqltmp = "SELECT COUNT(*)" +sql.substring(x);
this.executeme(sqltmp);
int allcount=-1;
try
{
if (rs.next())
allcount = Integer.parseInt(rs.getString(1));
}catch(Exception e){
this.close();
System.out.println("yearbook:dba:getAllcount():获取记录总数失败");
System.out.println("sql语句为:"+sql);
}
return allcount;*/

}
/**获取查询数据库数据,返回一个二维数组*/ //2004/02/26 最后修改!
public String [][] getData()
{
int columns; //数据库总列数
int rsRow=-1; //数据库总行数
int toi=-1;
String dbdata[][]=null; //存取数据库数据的数组
Vector dbx=new Vector(); //建立动组数组来存放数据库的数据
pub to = new pub(); //公用函数,此处用做转码
if (this.pagingFlag) { //是否应用分页!
int tmp = this.pageSize;
if (tmp > this.allRsCount) {
tmp = this.allRsCount;
}
rsRow = tmp;
int toCount;
toCount = this.page * this.pageSize;
if ( (toCount - this.allRsCount) > 0) {
rsRow = this.pageSize - (toCount - this.allRsCount);
}
toi = (this.page - 1) * this.pageSize;

}
if (rsRow==0) return null;

//执行查询
this.executeme(this.sql);
try {
ResultSetMetaData rsmd = rs.getMetaData();
columns = rsmd.getColumnCount(); //获得数据库总列数
//System.out.println("列为:"+columns);
////////////////////////////////////////////////////
if (this.pagingFlag) //如果应用分页
{
dbdata = new String[columns][rsRow];
if (toi == 0) {
rs.beforeFirst(); //指向记录集文件头位置
}
else
{
rs.absolute(toi); //否则指向适当的位置
}

for (int i = 0; i < rsRow; i++)
{
if (rs.next())
{
for (int l = 1; l <= columns; l++)
{
//将从数据库所查询得出的数据存入dbdata二维数组中
dbdata[l - 1][i] = to.togbStr(rs.getString(l));
}
}
else
{
break;
}
}
}
////////////////////////////////////////////////////
else
{ //不用分页
if (!rs.next()) {
return null;
}
rs.beforeFirst();
while(rs.next()) //循环将数据库的数据加入dbx 对象中
{
String tmpdata []=new String [columns];
for(int i=1;i<=columns;i++)
{
tmpdata[i-1] = to.togbStr(rs.getString(i));
//System.out.println("tmpdata["+(i-1)+"]: "+tmpdata[i-1]);
}
dbx.addElement(tmpdata);
}
// String[]tmp123 =(String[])dbx.elementAt(1);
// System.out.println(tmp123[1]);
dbdata= new String[columns][dbx.size()];
for(int i=0;i<dbx.size();i++)
{
for(int j=0;j<columns;j++)
{
String[]tmp =(String[])dbx.elementAt(i);
//System.out.println("tmp["+tmp.length+"]["+tmp[0].length+"]");
dbdata[j][i]=tmp[j];
// System.out.println("tmp["+(j)+"][0]"+tmp[j]);
}
}
dbx.removeAllElements();
dbx=null;
}

}
catch (Exception ex) {
this.close();
System.out.println("yearbook:dba:getData():数据库获取数据操作失败!");
}
//如果正在应用分页则归位标志!
if (this.pagingFlag) { this.pagingFlag = false; }
return dbdata;
}

jk3278jk 2004-03-16
  • 打赏
  • 举报
回复
to :smallcat96(smallcat)
那只是我模块的一部分。完整的类给你看看。
帮我看看有没有什么写的不好的地方!
jk3278jk 2004-03-16
  • 打赏
  • 举报
回复
前端jsp调用只需要

String dbdata[][] = db.getData();
if (dbdata==null)
{
out.print("没找到任何记录");
return ;
}

for(int i=0;i<dbdata[0].length;i++)
{
out.print(dbdata[0][i]);
out.print(dbdata[1][i]);
// ......more
}

smallcat96 2004-03-16
  • 打赏
  • 举报
回复
我认为在你分页时,要是刷新本页的话,那么javabean不就如同重新定义了。
javabean中的值就没有了。
jk3278jk 2004-03-16
  • 打赏
  • 举报
回复
用vector 可以的!
给你我自己写的一个数据库操作类的getData()模块!

/**获取查询数据库数据,返回一个二维数组*/ //2004/02/26 最后修改!
public String [][] getData()
{
int columns; //数据库总列数
int rsRow=-1; //数据库总行数
int toi=-1;
String dbdata[][]=null; //存取数据库数据的数组
Vector dbx=new Vector(); //建立动组数组来存放数据库的数据
pub to = new pub(); //公用函数,此处用做转码
if (this.pagingFlag) { //是否应用分页!
int tmp = this.pageSize;
if (tmp > this.allRsCount) {
tmp = this.allRsCount;
}
rsRow = tmp;
int toCount;
toCount = this.page * this.pageSize;
if ( (toCount - this.allRsCount) > 0) {
rsRow = this.pageSize - (toCount - this.allRsCount);
}
toi = (this.page - 1) * this.pageSize;

}
if (rsRow==0) return null;

//执行查询
this.executeme(this.sql);
try {
ResultSetMetaData rsmd = rs.getMetaData();
columns = rsmd.getColumnCount(); //获得数据库总列数
//System.out.println("列为:"+columns);
////////////////////////////////////////////////////
if (this.pagingFlag) //如果应用分页
{
dbdata = new String[columns][rsRow];
if (toi == 0) {
rs.beforeFirst(); //指向记录集文件头位置
}
else
{
rs.absolute(toi); //否则指向适当的位置
}

for (int i = 0; i < rsRow; i++)
{
if (rs.next())
{
for (int l = 1; l <= columns; l++)
{
//将从数据库所查询得出的数据存入dbdata二维数组中
dbdata[l - 1][i] = to.togbStr(rs.getString(l));
}
}
else
{
break;
}
}
}
////////////////////////////////////////////////////
else
{ //不用分页
if (!rs.next()) {
return null;
}
rs.beforeFirst();
while(rs.next()) //循环将数据库的数据加入dbx 对象中
{
String tmpdata []=new String [columns];
for(int i=1;i<=columns;i++)
{
tmpdata[i-1] = to.togbStr(rs.getString(i));

}
dbx.addElement(tmpdata);
}

dbdata= new String[columns][dbx.size()];
for(int i=0;i<dbx.size();i++)
{
for(int j=0;j<columns;j++)
{
String[]tmp =(String[])dbx.elementAt(i);

dbdata[j][i]=tmp[j];
}
}
dbx.removeAllElements();
dbx=null;
}

}
catch (Exception ex) {
this.close();
System.out.println("yearbook:dba:getData():数据库获取数据操作失败!");
}
//如果正在应用分页则归位标志!
if (this.pagingFlag) { this.pagingFlag = false; }
return dbdata;
}
Yoinn 2004-03-16
  • 打赏
  • 举报
回复
ArrayList al = new ArrayList();
al.add("0");
al.add("1");

ArrayList xx = new ArrayList();
xx.add(al);
myxd 2004-03-16
  • 打赏
  • 举报
回复
用vector不行吗?
内容概要:本文围绕基于风光储能和需求响应的微电网日前经济调度问题,提出了一种综合考虑风能、光伏等可再生能源出力不确定性、储能系统充放电特性以及需求响应机制的优化调度模型,并提供了完整的Python代码实现。该模型在满足系统功率平衡、设备运行约束等条件下,以最小化运行成本或最大化经济效益为目标,详细阐述了数学建模过程、目标函数构建、约束条件设定及求解算法的设计思路,具备较强的理论深度与工程实用性。所附代码结构清晰,便于复现与拓展,适用于科研学习与实际项目仿真验证。; 适合人群:具备一定电力系统基础知识和Python编程能力的高校学生、研究人员及从事新能源微电网相关工作的工程师。; 使用场景及目标:①用于教学与科研中深入理解微电网日前经济调度的核心原理与建模方法;②为实际微电网项目的调度决策提供算法支持与仿真工具;③作为进一步研究多能源协同优化、不确定性处理(如场景生成与削减)、鲁棒优化或分布鲁棒优化的基础框架。; 阅读建议:建议读者结合文中代码逐行调试运行,深入理解各模块功能与数据流向,同时可尝试修改模型参数、增加新的约束条件或引入其他智能优化算法进行对比分析,以提升对微电网优化调度问题的整体建模与求解能力。
源码直接下载地址: https://pan.quark.cn/s/95437fdf229e Intel I-219V网卡驱动是一款专门为Intel的I-219V千兆以太网控制器而研发的驱动程序,其主要作用在于保障在Ubuntu 16.04操作系统环境下的正常运作以及优化系统性能。Intel I-219V作为一款广泛应用的内置网络接口控制器(NIC),常被集成在台式机及笔记本电脑的主板上,负责提供高速的网络连接服务。Intel公司所提供的e1000e驱动是与此硬件相配套的开源驱动解决方案,其中版本3.3.5.3是专门针对该硬件设备的定制版本。此驱动包含了不可或缺的源代码部分,赋予开发者和系统管理者按照特定需求进行编译和定制的权限,从而能够适应多样化的系统配置或针对特定情形进行问题解决。源代码的可用性同样表明用户有能力依据Linux内核的更新情况来升级驱动,确保与最新技术标准的兼容性。在Ubuntu 16.04系统中成功编译的驱动意味着它已经通过了严苛的测试流程,并能够与该版本的Linux内核实现良好兼容。Ubuntu 16.04,其代号为Xenial Xerus,是一个长期支持(LTS)的版本,因此对于那些追求系统稳定性和安全保障的用户群体而言具有特殊的意义。驱动程序的兼容性保障了I-219V网卡能够在该系统平台上实现无缝运行,提供稳定可靠的网络连接,这既包括局域网(LAN)的连接,也可能涵盖通过Wi-Fi桥接实现的无线网络连接。驱动程序的核心职责涵盖了网络接口的初始化与管理、数据包的接收与发送处理,以及错误检测与纠正功能的执行。在Linux操作系统架构中,驱动通常以模块的形式加载至内核之中,这种设计允许在非必要时期进行卸载操作,以此来有效节省系统资源。e1000e驱...
内容概要:本文围绕基于共识的捆绑算法(CBBA)在多智能体系统中的多任务分配问题展开研究,重点应用于远程太空船交会与维修的相对轨道操作(RPO)规划。通过Matlab代码实现了CBBA算法,系统地解决了多个航天器在复杂空间环境下协同执行多目标任务时的任务分配、路径规划与动态协商问题。研究详细展示了算法在任务分解、竞标机制、共识达成及冲突消解等方面的核心逻辑,验证了其在分布式决策、通信受限条件下的高效性与鲁棒性,并结合航天工程实际背景突出了算法的应用价值。该资源不仅提供完整的仿真代码,还包含详细的流程解析,有助于深入理解多智能体协同机制的设计原理。; 适合人群:具备控制理论、航天器动力学、多智能体系统或分布式优化背景的研究生、科研人员及航空航天领域工程技术人员,熟练掌握Matlab编程者尤佳。; 使用场景及目标:①应用于在轨服务、空间碎片清除、多航天器编队飞行、星座维护等多智能体协同任务的任务分配与规划;②为研究人员提供CBBA算法的实现范例,支撑其开展分布式任务规划算法的改进与扩展研究;③作为教学案例用于高级课程中讲解多智能体协同决策机制。; 阅读建议:建议结合Matlab代码逐模块分析算法实现过程,重点关注任务打包、竞标更新、共识收敛等关键环节,可尝试引入通信延迟、故障容错或障碍规避机制以进一步提升算法实用性。

81,110

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧