为什么这个bean返回null

yxqc 2005-03-05 03:06:58
方法如下:
NewsMode 是一个参数类
DBConnection 是一个数据库类
已测式过SQL语句是没有问题的.
可是好像while循环走不进去,里面有个测式的,总是输出null.
不知首为什么?

public Vector findallNews()throws Exception
{
vc = new Vector();
nm = new NewsMode();
sbf = new StringBuffer(" select * from ");
sbf.append(NewsMode.TABLE_NAME);
sbf.append(" where mark = '是' order by Id desc ");

try
{
dbc = new DBConnection();
dbc.getConnection();
rs = dbc.executeQuery(sbf.toString());
System.out.println(sbf.toString());
while(rs.next())
{

nm.setId(rs.getInt("Id"));
System.out.println(rs.getInt(1));//
nm.setNewsName(rs.getString("newsname"));
nm.setNewsTitle(rs.getString("newstitle"));
nm.setNewsContent(rs.getString("newscontent"));
nm.setNewsDatetime(rs.getString("newsdatetime"));
nm.setMark(rs.getString("mark"));
nm.setPoint(rs.getInt("point"));
vc.add(nm);
}

dbc.close();

}
catch(Exception e)
{
System.out.println(e.getMessage());
}

return vc;
}
...全文
160 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhulei0429 2005-03-08
  • 打赏
  • 举报
回复
ResultSet取值的时候只能从地一个字段往后去,不能取完2在去取1,你看看你字段的顺序是从1顺序到完的吗在看看字段类型有没有问题
LittleLandlord 2005-03-07
  • 打赏
  • 举报
回复
你的sbf先定义为字符串试一下,估计sbf.append是不是加别的转义字符了?先用字符串试一下,String sbf
yxqc 2005-03-07
  • 打赏
  • 举报
回复
不会的.
程序里,我有把这句话打印出来的.System.out.println(sbf.toString());
然后我把它复制到mysql里运行,运行结果都正常的,能显示数据的.
J_pioneer 2005-03-07
  • 打赏
  • 举报
回复
我也来参与讨论。
首先要确定DB中有满足条件的记录!
剩下的应该就是sql语句的问题了,有没有可能条件'是'在执行的时候就变成了乱码了呢?我在用oracle数据库的时候就遇到过这样的问题的
yxqc 2005-03-07
  • 打赏
  • 举报
回复
TABLE_NAME是字符串的.
public static String TABLE_NAME = "news";
LittleLandlord 2005-03-07
  • 打赏
  • 举报
回复
sbf = new StringBuffer(" select * from ");
sbf.append(NewsMode.TABLE_NAME);
sbf.append(" where mark = '是' order by Id desc ");

你的TABLE_NAME返回的是字符串吗?如果是,改为
sbf = new StringBuffer(" select * from '");
sbf.append(NewsMode.TABLE_NAME);
sbf.append("' where mark = '是' order by Id desc ");
yxqc 2005-03-07
  • 打赏
  • 举报
回复
maoweihua(渔樵耕读) :
按照你这样写不行啊.Statement st = dbc.getConnection().createStatement();这句话根本能不过.getConnection()这个方法返回的是void类型的.行不能的.还有一个问题就是我按照自己的写法,把数据写入数据库是可以的,可是为什么取不出数据呢?郁闷ing!~
tai_1219 2005-03-07
  • 打赏
  • 举报
回复
表NewsMode.TABLE_NAM的第一个字段是不是Integer型。最好确认。
还有一般不要用select * ,最好用select x,y,z 明确字段。
java_ak47 2005-03-07
  • 打赏
  • 举报
回复
你确定DBConnection ,没问题?
yxqc 2005-03-07
  • 打赏
  • 举报
回复
都试了.select * from news where mark = 'F' order by id desc
LittleLandlord 2005-03-07
  • 打赏
  • 举报
回复
你先别用汉字,试一下
yxqc 2005-03-07
  • 打赏
  • 举报
回复
我把这里ResultSet rs = st.executeQuery(sbf.toString());
改成ResultSet rs = st.executeQuery(" select * from news where mark = '是' order by id desc ");
都不行啊,55~~~~~~~~~~~~~~~````

yeshucheng 2005-03-06
  • 打赏
  • 举报
回复
建议可以跟踪看看
congbailing_914 2005-03-06
  • 打赏
  • 举报
回复
顶!
程序写的很清楚,应该很快得到答案的!
maoweihua 2005-03-05
  • 打赏
  • 举报
回复
改成:
try
{
dbc = new DBConnection();
Statement st = dbc.getConnection().createStatement();
ResultSet rs = st.executeQuery(sbf.toString());
System.out.println(sbf.toString());
while(rs.next())
{

nm.setId(rs.getInt("Id"));
System.out.println(rs.getInt(1));//
nm.setNewsName(rs.getString("newsname"));
nm.setNewsTitle(rs.getString("newstitle"));
nm.setNewsContent(rs.getString("newscontent"));
nm.setNewsDatetime(rs.getString("newsdatetime"));
nm.setMark(rs.getString("mark"));
nm.setPoint(rs.getInt("point"));
vc.add(nm);
}
rs.close();
st.close();
dbc.close();

}
catch(Exception e)
{
System.out.println(e.getMessage());
}

return vc;
}
esunboy 2005-03-05
  • 打赏
  • 举报
回复
rs 里面有纪录吗?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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