当前位置:编程学习 > JAVA >>

空指针问题 求教

  while(rs_oracle.next()){
                String s_3;
                String[] sforDataType = new String[300];
                System.out.println(rs_oracle == null); //前两遍循环此处输出都为 false
                s_3 = rs_oracle.getString("TABLE_NAME");//在循环第二遍的时候,在这句抛出 空指针错误 为什么???
                if(rs_oracle.next()){
                    if(s_3.equals(rs_oracle.getString("TABLE_NAME"))){
                        rs_oracle.previous();
                        s_2 = s_2 + rs_oracle.getString("COLUMN_NAME") + " " + getPostgreSQL_Data_Type() + ",";
                        sforDataType[m] = getPostgreSQL_Data_Type();
                        ++ m;
                        }else{
                        rs_oracle.previous();
                        s_2 = s_2 + rs_oracle.getString("COLUMN_NAME") + " " + getPostgreSQL_Data_Type();
                        PostgreSQL_sta.execute("create table " +  s_3 + "(" + s_2 +");");
                        sforDataType[m] = getPostgreSQL_Data_Type();
                        insertPG(m,s_3,sforDataType);
                        m = 1;
                        sforDataType = null;
                    }
                  }
                } --------------------编程问答-------------------- 没人懂? --------------------编程问答-------------------- 你贴出的部分,看不出什么问题。 --------------------编程问答-------------------- 贴错误信息~ --------------------编程问答-------------------- 一段没头没尾的代码,我想运行也运行不了!! --------------------编程问答-------------------- false
false
Exception in thread "main" java.lang.NullPointerException
at oracle.jdbc.driver.ScrollableResultSet.findColumn(ScrollableResultSet.java:946)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1506) --------------------编程问答--------------------
引用 5 楼  的回复:
s_3 = rs_oracle.getString("TABLE_NAME");//在循环第二遍的时候,在这句抛出 空指针错误 为什么???


个人理解、下面的阐述可能有误、

呵呵  你应该知道rs_oracle.next() 的意思吧、

如果你的数据库的表里有3条数据的话

while -- 》 rs_oracle.next()  遍历完全部的rs结果集、第一次指向第一条数据与第二条数据的中间、

1      2       3   

   ↑


你又在if -- 》 rs_oracle.next()   那么此时候  他就会游标向下移动一位、造成了
1      2       3   

           ↑



此while第一走完走第二遍的时候  rs.next()指针都已经错乱了、 而且每次循环一次 你就多指了1位、

应该是你这里的逻辑错误吧

不应该在 while rs.next() 里面在继续判断 if.next()。 --------------------编程问答--------------------
引用 6 楼  的回复:
1 2 3   

  ↑


昏。。。这怎么跟我做的不一样的显示效果、 反正就是箭头在 1 和 2 的中间、
1 . . 2 . . 3 . . 
 .↑

第二个是在 2和3的中间、
1 . . 2 . . 3 . . 
.........↑ --------------------编程问答-------------------- 打个断点调下把 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 6 楼  的回复:
引用 5 楼 的回复:
s_3 = rs_oracle.getString("TABLE_NAME");//在循环第二遍的时候,在这句抛出 空指针错误 为什么???


个人理解、下面的阐述可能有误、

呵呵 你应该知道rs_oracle.next() 的意思吧、

如果你的数据库的表里有3条数据的话

while -- 》 rs_oracle.next() 遍历完全部的rs结……


谢谢你的回答,不是next()的问题,是我设置的取系统表和用户表的时候用的同一个statement对象,导致循环的时候把前一个statement对象给冲刷掉了,问题已解决,感谢各位!
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,