【问题标题】:extracting from DB using JDBC and creating array使用 JDBC 从数据库中提取并创建数组
【发布时间】:2014-04-19 15:58:16
【问题描述】:

我正在尝试从 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&lt;ArrayList&lt;String&gt;&gt;,但只是卡在这里

【问题讨论】:

  • 发布您的错误堆栈。堆栈应该告诉你哪一行代码抛出了NullPointerException。此外,rowListResult_ofMethos.toString() 不会给出任何有用的、可读的字符串。
  • @wns349,谢谢,这里是堆栈:Exception in thread "main" java.lang.NullPointerException at modelo.ConectorBaseDatos.main(ConectorBaseDatos.java:422) 这是这行代码:`System.out.println(rowListResult_ofMethos.toString());`
  • @wns349 我一直收到此错误,但不明白为什么,我现在正在学习使用调试器,但仍在学习过程中可能是什么问题?
  • 错误提示您在第 422 行有问题。我不知道那行是什么,但我猜这是因为 rowListResult_ofMethodsnull 而您正在尝试调用 @987654330 @ 在上面。也许发布您的整个代码? ConnectorBaseDatos 类是具体的。 (有点不好的感觉,ConnectorBaseDatos 的代码会很长,因为异常是从第 422 行抛出的......)
  • @wns349 是的有点长,它只是一些其他方法,但它们与此无关,第 422 行是这样的:System.out.println(rowListResult_ofMethos.toString()); 是的,我认为 rowListResult_ofMethodsnull 但是不明白为什么,所有需要知道的都在这里张贴,ConnectorBaseDatos 的其余部分无关紧要

标签: java mysql arrays jdbc arraylist


【解决方案1】:

我会写在这里,因为这可能会让评论有点长。

rowListResult_ofMethodsnull 意味着您对OBJ_testGetRowMethod.getRow("SELECT * FROMarbitros", "fifa") 的调用返回了null

查看您的public ArrayList&lt;String&gt; getRow(String quEry, String db) 方法,我看不到row_result 第一次初始化的位置。

因此,您应该找到并确保 row_result 已在某处初始化。 (可能在某处类似于row_result = new ArrayList&lt;String&gt;()。)

此外,你不应该(我会说从不,可能因其他人而异)在捕获异常后什么都不做!

不要这样做:

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。但是这个例外被丢弃并且没有采取任何行动,因为您将该部分留空。

【讨论】:

  • 优秀!!是的,我犯了一个非常愚蠢的错误,但一直在寻找这个时间,jeje谢谢!
【解决方案2】:

你在哪里声明ArrayList&lt;String&gt; row_result?(静态可能) 如果您初始化为ArrayList&lt;String&gt; row_result=null 并且您没有任何结果集返回,那么它将抛出 NPE。如果你有结果集,那么 NPE 将在第一行。确保将其初始化为 ArrayList row_result=new ArrayList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多