【问题标题】:JAVA how can I readl a SQL and add in a object arrayJAVA如何读取SQL并添加对象数组
【发布时间】:2014-05-01 10:55:26
【问题描述】:

我在读取数据库时遇到问题。选择查询运行正常,但是当我尝试在我的对象数组中添加时,它在程序读取时失败并出现空指针异常。这是我的完整功能代码,这个功能在同一个类中

 Proveedores pro[];
   int num_pro =0;
   try{
       DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
       Connection conexion = DriverManager.getConnection ("jdbc:mysql://127.0.0.1:3306/fastfood","root", "");
       Statement s = conexion.createStatement();
       ResultSet rs = s.executeQuery ("SELECT COUNT(*) FROM proveedores");

       rs.next();
           num_pro = rs.getInt(1);

       conexion.close();
    }
    catch (Exception e){
        e.printStackTrace();
    }
   pro = new Proveedores[num_pro];
    try
    {
        DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
        Connection conexion = DriverManager.getConnection ("jdbc:mysql://127.0.0.1:3306/fastfood","root", "");
        Statement s = conexion.createStatement();
        ResultSet rs = s.executeQuery ("SELECT * FROM proveedores");
        int i=0;
        while (rs.next()){
            pro[i].setCodigo(rs.getInt(1));
            pro[i].setNombre(rs.getString(2));
            pro[i].setApellidos(rs.getString(3));
            pro[i].setDireccion(rs.getString(4));
            pro[i].setTelefono(rs.getInt(5));
            i++;
        }
        conexion.close();
        return pro;
    }
    catch (SQLException s){
        System.out.println ("Error a la hora de insertar en la BBDD");
    }
    catch (Exception e){
        e.printStackTrace();
    }

【问题讨论】:

    标签: java sql arrays object


    【解决方案1】:

    我认为您错过了创建每个 pro[i] 项目的调用。

    添加

    pro[i] = new Proveedores();
    

    之前

    pro[i].setCodigo(...)
    pro[i].setNombre(...)
    

    当你这样做时

    pro = new Proveedores[num_pro];
    

    您只是在创建一个可以容纳 num_pro 条目的数组 - 每个条目都必须单独创建。

    【讨论】:

    • 我已经用完整的功能代码编辑了我的第一篇文章,对不起:-(
    【解决方案2】:

    添加以下内容:

    ....
    YourObject obj = new YourObject()
    pro[i] = obj;
    
    obj.setCodigo(rs.getInt(1));
    obj.setNombre(rs.getString(2));
    obj.setApellidos(rs.getString(3));
    obj.setDireccion(rs.getString(4));
    obj.setTelefono(rs.getInt(5));
    ....
    

    【讨论】:

      【解决方案3】:

      感谢 Aidan,我添加了这一行 pro[i] = new Proveedores();

      while (rs.next()){
                  pro[i] = new Proveedores();
                  pro[i].codigo = rs.getInt(1);
                  pro[i].setNombre(rs.getString(2));
                  pro[i].setApellidos(rs.getString(3));
                  pro[i].setDireccion(rs.getString(4));
                  pro[i].setTelefono(rs.getInt(5));
                  i++;
              }
      

      【讨论】:

        猜你喜欢
        • 2017-07-14
        • 2018-05-16
        • 1970-01-01
        • 2014-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-26
        相关资源
        最近更新 更多