使用JDBC从DB中提取并创建数组

时间:2014-04-19 15:58:17

标签: java mysql arrays jdbc arraylist

我试图从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

2 个答案:

答案 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();