空指针问题 求教
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) --------------------编程问答--------------------
个人理解、下面的阐述可能有误、
呵呵 你应该知道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()。 --------------------编程问答--------------------
昏。。。这怎么跟我做的不一样的显示效果、 反正就是箭头在 1 和 2 的中间、
1 . . 2 . . 3 . .
.↑
第二个是在 2和3的中间、
1 . . 2 . . 3 . .
.........↑ --------------------编程问答-------------------- 打个断点调下把 --------------------编程问答-------------------- --------------------编程问答--------------------
谢谢你的回答,不是next()的问题,是我设置的取系统表和用户表的时候用的同一个statement对象,导致循环的时候把前一个statement对象给冲刷掉了,问题已解决,感谢各位!
补充:Java , Java EE