ArrayList al = new ArrayList();
al.add("0");
al.add("1");ArrayList xx = new ArrayList();
xx.add(al);
al.add("0");
al.add("1");ArrayList xx = new ArrayList();
xx.add(al);
解决方案 »
- 大家看看这个投票网站的“防同一ip多次投票”的技术原理是什么?
- <s:actionmessage /> 无法显示 addActionMessage(str)中的信息
- struts2在jsp中如何随机访问集合(集合可能是Array,List、Set中的一种)属性的元素?(注意:不是遍历,是随机访问)
- 求大侠帮帮忙 关于文本框取值问题 谢谢 在线等
- 关于JSF自定组件的问题(在线等答案,请高手赐教!!)
- ASP与JAVA兼容性有多少??
- 下拉列表框onclick时,如何把选择的值传session?
- 希望帮忙解决~~~困惑中...........
- 不同文件加中的jsp怎么互相访问
- javaweb查询数据库将特定记录查询出来放在页面开始位置。
- 用jsp做的页面,javabean连接数据库,为什么不行,我第一次发贴子
- 关于b/s模式编程技术的问题,求助啊.
给你我自己写的一个数据库操作类的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;
}
javabean中的值就没有了。
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
}
那只是我模块的一部分。完整的类给你看看。
帮我看看有没有什么写的不好的地方!
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;
}