出错提示
java.lang.NullPointerException at ClientQuery.getResInfo(ClientQuery.java:51) at ClientQuery.main(ClientQuery.java:10)Exception in thread "main" Process exited with exit code 1.代码import java.sql.*;public class ClientQuery
{
public static void main(String[] args)
{
ClientQuery c = new ClientQuery();
//下面这行出错 c.getResInfo("100000")肯定可以取到值
String s[] = c.getResInfo("100000");
for(int i = 0;i<s.length;i++)
{
System.out.println(s[i]);
}
}
private Connection getConn() {
String DRIVER="oracle.jdbc.driver.OracleDriver";
String URL="jdbc:oracle:thin:@shanghai.com:1521:shzt";
String USER="scott";
String PWD="tiger";
Connection conn = null;
try {
Class.forName(DRIVER).newInstance();
conn = DriverManager.getConnection(URL,USER,PWD);
}catch(Exception e) {
e.printStackTrace();
}
return conn;
}
public String[] getResInfo (String name) {
String sql = "select * from emp";
Connection conn = getConn();
ResultSet rs = null;
Statement stmt = null;
String str[] = null;
int i = 1; try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs != null && rs.next())
{
System.out.println(rs.getString(1)+i);
//下面这行出错
str[i-1] = rs.getString(i);
i++;
}
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
}
java.lang.NullPointerException at ClientQuery.getResInfo(ClientQuery.java:51) at ClientQuery.main(ClientQuery.java:10)Exception in thread "main" Process exited with exit code 1.代码import java.sql.*;public class ClientQuery
{
public static void main(String[] args)
{
ClientQuery c = new ClientQuery();
//下面这行出错 c.getResInfo("100000")肯定可以取到值
String s[] = c.getResInfo("100000");
for(int i = 0;i<s.length;i++)
{
System.out.println(s[i]);
}
}
private Connection getConn() {
String DRIVER="oracle.jdbc.driver.OracleDriver";
String URL="jdbc:oracle:thin:@shanghai.com:1521:shzt";
String USER="scott";
String PWD="tiger";
Connection conn = null;
try {
Class.forName(DRIVER).newInstance();
conn = DriverManager.getConnection(URL,USER,PWD);
}catch(Exception e) {
e.printStackTrace();
}
return conn;
}
public String[] getResInfo (String name) {
String sql = "select * from emp";
Connection conn = getConn();
ResultSet rs = null;
Statement stmt = null;
String str[] = null;
int i = 1; try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs != null && rs.next())
{
System.out.println(rs.getString(1)+i);
//下面这行出错
str[i-1] = rs.getString(i);
i++;
}
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
}
str[i-1] = rs.getString(i);str未初始化,就被使用!!!
有两种数组定义,一是在定义数据时初始化它的内存大小如:String s[10]=nill .....这种方法不可能动态设置数组大小,并不支持插入移除元素。慎用。
二是用ArrayList,可动态分配数据容量,实现了List接口,可以插入object对象。这个概念有点复杂,具体参看JAVA核心技术第二卷第二章“集合”。你会学到更多,当然,分也要给我一份。谢谢
你在初始化的时候没有分配空间,便直接使用,最好new一下,分配空间.如:String s[] = new String[100];