写程序时,要求先对Oracle进行select,如果有记录,则运行后面的代码,如果没有记录则不运行。
于是我用了这样的方法:(不用select count(*)as num from tb,是为了不想多一次select操作以增加数据库的负担)
ResultSet rs1=null;
rs1=st.executeQuery("select * from tb");
rs1.last();
sqlnum=rs1.getRow()-1; //此处本来没有减1,但第一次sqlnum值为0,以后即使没有记录,该值也会为1
rs1.first();
if (sqlnum>0)
{
..........
}
请教各位大侠,这个到底是哪里有问题?难道是rs1的指针有问题?敬请指教,或有无其他更好的办法(不用select),谢谢啦!!!
于是我用了这样的方法:(不用select count(*)as num from tb,是为了不想多一次select操作以增加数据库的负担)
ResultSet rs1=null;
rs1=st.executeQuery("select * from tb");
rs1.last();
sqlnum=rs1.getRow()-1; //此处本来没有减1,但第一次sqlnum值为0,以后即使没有记录,该值也会为1
rs1.first();
if (sqlnum>0)
{
..........
}
请教各位大侠,这个到底是哪里有问题?难道是rs1的指针有问题?敬请指教,或有无其他更好的办法(不用select),谢谢啦!!!
你这样写法要求rs为scrollable的,在st创建时指定参数.具体请参考java doc中ResultSet和Statement及Connection.
Statement st=null;
st=smgwpool.createStatement.ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
我在select后,就是用的while(rs1.next())但是我要在这个while外面先生成一个文件,把结果集的内容一条一条地写入文件,注:如果没有记录就不写入文件!请问这个有什么办法吗?
测试中,数据库中有一条记录,但是
sqlnum=rs1.getRow();
rs1.last();
sqlnum=rs1.getRow();
第一个sqlnum=0
第二个sqlnum=1
怎么会这样?谢谢!
下面的判断条件if(sqlnum>0)...