我试图从mysql数据库中提取,但我的代码不断抛出nullpointerexception
并认为它因为没有创建数组,我做错了什么?
这里是代码: - 谢谢!
public ArrayList<String> getRow(String quEry, String db){
String url = "jdbc:mysql://localhost:3306/"+db;
try {
conn = DriverManager.getConnection(url, "root", "");
} catch (SQLException e) {
}
try{
query = conn.prepareStatement(quEry);
}catch(Exception e){
}
try {
getRow_Method_Result = query.executeQuery();
} catch (SQLException e) {
}
try{
while(getRow_Method_Result.next()){
row_result.add(getRow_Method_Result.getString(1));
row_result.add(getRow_Method_Result.getString(2));
row_result.add(getRow_Method_Result.getString(3));
row_result.add(getRow_Method_Result.getString(4));
}
}catch(Exception e){
}
return row_result;
}
public static void main(String[] args) {
ConectorBaseDatos OBJ_testGetRowMethod = new ConectorBaseDatos();
ArrayList<String> rowListResult_ofMethos = OBJ_testGetRowMethod.getRow("SELECT * FROM `arbitros`", "fifa");
System.out.println(rowListResult_ofMethos.toString());
}
我试图将其创建为String[][] array
,但由于这有点复杂,因此决定首先将其创建为ArrayList,然后将此结果插入ArrayList<ArrayList<String>>
但只是STUCK HERE
答案 0 :(得分:0)
我会写在这里,因为这可能会有点长的评论。
rowListResult_ofMethods
null
表示您对OBJ_testGetRowMethod.getRow("SELECT * FROM
仲裁", "fifa")
的调用已返回null
。
查看您的public ArrayList<String> getRow(String quEry, String db)
方法,我看不到首次初始化row_result
的位置。
因此,您应该找到并确保在某处初始化row_result
。 (可能在某处row_result = new ArrayList<String>()
之类的东西。)
此外,你永远不应该(我会说从来没有,可能因其他人而异)在发现异常后什么都不做!
不要这样做:
try{
while(getRow_Method_Result.next()){
row_result.add(getRow_Method_Result.getString(1));
row_result.add(getRow_Method_Result.getString(2));
row_result.add(getRow_Method_Result.getString(3));
row_result.add(getRow_Method_Result.getString(4));
}
} catch(Exception e){
//Do not leave this blank!!! you must handle exception here !
// At least do e.printStackTrace(); to see exception during development.
}
只要对您的数据库的连接和查询成功,我猜测上面的row_result.add(getRow_Method_Result.getString(1));
会抛出NullPointerException
。但是这个例外被丢弃了,没有采取任何行动,因为你把那部分留空了。
答案 1 :(得分:0)
你在哪里声明ArrayList<String> row_result
?(静态可能)
如果您正在初始化为ArrayList<String> row_result=null
并且您没有任何结果集返回,那么它将抛出您的NPE。如果你有结果集,那么NPE将在第一行内。确保将其初始化为ArrayList row_result = new ArrayList();