标题:一个javabean返回数组的问题(有代码),帮分析分析
只看楼主
zq1983
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-4-27
 问题点数:0 回复次数:4 
一个javabean返回数组的问题(有代码),帮分析分析

package dbconn ;
import java.sql.* ;

// 接数据库、关闭数据库
public class DbConnection
{
private final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;
private final String DBURL = "jdbc:odbc:logistics" ;
private final String DBUSER = "admin3" ;
private final String DBPASSWORD = "admin3" ;
private static Connection conn = null ;

public DbConnection()
{
try
{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
}
catch (Exception e)
{
}
}

// 取得数据库连接
public static Connection getConnection()
{
return conn ;
}

// 关闭数据库连接
public static void close()
{
try
{
conn.close() ;
}
catch (Exception e)
{
}
}
};
////////////////////////////////////////////////////////

package wh;
import java.sql.*;
import dbconn.*;

//把从表corp中的corp_name字段全部存放到数组str中,并返回这个数组
public class WhCorp {
public String[]updateUser( ){
String []str = null;
Statement stmt=null;

try{
stmt = DbConnection.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(" select corp_name from corp ");
ResultSet rsCount =stmt.executeQuery("select count(*) from corp");
rsCount.next();
int tc = rsCount.getInt(1); //得到记录的个数
for(int i=0;i<tc;i++){
str[i]=(String) rs.getObject(i+1); //通过循环存如str中
}
rsCount.close();
rs.close();
}catch(SQLException e){
e.printStackTrace();

}
finally{
DbConnection.close();
}
return str;


}

}
/////////////////////////////////////

然后我在jsp里调用第二个javabean说我数组里什么也没有,直接空指针错误.

[此贴子已经被作者于2007-5-29 23:06:54编辑过]

搜索更多相关主题的帖子: javabean 数据库 private final 
2007-05-29 23:05
支离破碎
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:737
专家分:0
注 册:2007-1-4
得分:0 

stmt = DbConnection.getConnection().createStatement();

这样写你的con是空的啊,你的con对连实例化在DbConnection的构造函数中,如果你要用单例模式就应该把实例化写到getConnection中,把构造函数改成私有的。

String[] str这写的好像也有问题,你下面直接str[i]这样用了,没有对数据分配大小空间。

rsCount.next();//这里也有问题,你指针下移了,查出的数据会少一个。
int tc = rsCount.getInt(1); //得到记录的个数 -----行得记录总数也不是这样用的,有别的方法
所以你后面的for可能就是空的。


人生漂泊無依,有如浮萍菱花,隨水飄流,你会在我这里停留吗?
[url=http://51mynet.]http://51mynet.[/url]
2007-05-30 09:14
being
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-3-29
得分:0 
str[i]=(String) rs.getObject(i+1);
改成这个:
str[i]=(String)rs.getObject(1);

小弟新来的!请多指教!
2007-05-31 14:14
威震天下
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-2-19
得分:0 
[QUOTE]

[QUOTE]rsCount.next();
int tc = rsCount.getInt(1);
改为:
int tc = 0;
if(rsCount.next){
tc = rsCount.getInt(1);
}

[/QUOTE]stmt = DbConnection.getConnection().createStatement();

这样写你的con是空的啊,你的con对连实例化在DbConnection的构造函数中,如果你要用单例模式就应该把实例化写到getConnection中,把构造函数改成私有的。

我认为这里的conn,不为空。在构造函数里已经获得值了

[/QUOTE]str[i]=(String) rs.getObject(i+1);
改成这个:
str[i]=(String)rs.getObject(1);

将i+1改为1,这只能得到一个值。
2007-05-31 16:44
支离破碎
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:737
专家分:0
注 册:2007-1-4
得分:0 
以下是引用威震天下在2007-5-31 16:44:38的发言:

rsCount.next();
int tc = rsCount.getInt(1);
改为:
int tc = 0;
if(rsCount.next){
tc = rsCount.getInt(1);
}

stmt = DbConnection.getConnection().createStatement();

这样写你的con是空的啊,你的con对连实例化在DbConnection的构造函数中,如果你要用单例模式就应该把实例化写到getConnection中,把构造函数改成私有的。

我认为这里的conn,不为空。在构造函数里已经获得值了

这里根本就没得到CONN,他的DbConnection根本没实例化,怎么会调用构造函数。他这种写法是想用单例模式或是想把方法写成类调用静态方法的模式,但是构造方法不会被运行的。


人生漂泊無依,有如浮萍菱花,隨水飄流,你会在我这里停留吗?
[url=http://51mynet.]http://51mynet.[/url]
2007-05-31 17:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-143398-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.342084 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved