0

ビルドパスに sqlite-jdbc-3.7.2.jar を追加しました。挿入クエリを使用しました。wellec.db をメモ帳で開くと、レコードが表示されます。しかし、私の選択は機能していません。

HERE WellInfo クラスのプロパティ

public Integer wellID;
public Integer measurement;
public String wellname;
public Integer wellstatus;
public String licenseno;
public String gl;
public String kb;
public String spuddate;
public String drillingenddate;
public String totaldepth;
public String notes;
public String easting;
public String northing;
public String coordinatesystem;
public Integer islogadd;

ここに私の作成可能なSQLがあります

          Class.forName("org.sqlite.JDBC");
          c = DriverManager.getConnection("jdbc:sqlite:wellec.db");
          c.setAutoCommit(false);
          System.out.println("Opened database successfully");

          stmt = c.createStatement();

          String sql = "CREATE TABLE IF NOT EXISTS WELLINFO " +
                    "(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ," +
                    " WELLNAME           CHAR(90)    NOT NULL, " +
                    " WELLSTATUS   INT NOT NULL," +
                    " MEASUREMENT INT NOT NULL," +
                    " ISLOGADD INT NOT NULL," +
                    " GL           CHAR(50)    NOT NULL, " +
                    " KB           CHAR(50)    NOT NULL, " +
                    " SPUDDATE           CHAR(50)    NOT NULL, " +
                    " TOTALDEPTH           CHAR(50)    NOT NULL, " +
                    " LICENSENO           CHAR(50)    NOT NULL, " +
                    " DRILLINGENDDATE           CHAR(50)    NOT NULL, " +
                    " NOTES           CHAR(150)    NOT NULL, " +
                    " EASTING           CHAR(50)    NOT NULL, " +
                    " NORTHING           CHAR(50)    NOT NULL, " +
                    " COORDINATESYSTEM CHAR(50)    NOT NULL)";
          stmt.executeUpdate(sql);
...//other tables sql and stmt.executeUpdate(sql)
 stmt.close();
 c.commit();

これが機能している私の挿入クエリです。パラメータとしての WellInfo wi

        Connection c = null;
        Statement stmt = null;
        try {
          Class.forName("org.sqlite.JDBC");
          c = DriverManager.getConnection("jdbc:sqlite:wellec.db");
          c.setAutoCommit(false);
          System.out.println("Opened database successfully");

          stmt = c.createStatement();
          String sql = "INSERT INTO WELLINFO " +
                    "(ID, WELLNAME, WELLSTATUS , MEASUREMENT, ISLOGADD , GL, KB, SPUDDATE, TOTALDEPTH, " +
                    "LICENSENO , DRILLINGENDDATE, NOTES, EASTING, NORTHING, COORDINATESYSTEM) " +
                    "VALUES (NULL,'" + wi.wellname + "'," + wi.wellstatus + "," + wi.measurement + "," +
                            "" + wi.islogadd +",'" + wi.gl + "','" + wi.kb + "','" + wi.spuddate + "'," +
                                    "'" + wi.totaldepth + "','" + wi.licenseno + "','" + wi.drillingenddate + "', " +
                                            "'" + wi.notes + "','" + wi.easting + "','" + wi.northing + "','" + wi.coordinatesystem + "');";
          stmt.executeUpdate(sql);

          stmt.close();
          c.commit();

        } catch ( Exception e ) {
          System.err.println( e.getClass().getName() + ": " + e.getMessage() );
          System.exit(0);
        }
        System.out.println("Records created successfully");

        return 0;

ここに私の選択があります

    Connection c = null;
    Statement stmt = null;
    WellInfo[] wi = new WellInfo[60000];
    WellInfo[] wi2 = new WellInfo[0];

    int i = 0;
    try {
      Class.forName("org.sqlite.JDBC");
      c = DriverManager.getConnection("jdbc:sqlite:wellec.db");
      //c.setAutoCommit(false);
      System.out.println("Opened database successfully");


      stmt = c.createStatement();
      ResultSet rs = stmt.executeQuery("select * from WELLINFO"); 
      //c.commit();

      //if(rs.getRow() > 0)
          while ( rs.next() ) { //HERE IS THE PROBLEM
                 wi[i].wellID = rs.getInt("ID");
                 i++;
          }

      wi2 = new WellInfo[i];
      for(int j = 0; j < i - 1; j++){
          wi2[j] = wi[j];
      }

      rs.close();
      stmt.close();

      return wi2;
    } catch ( Exception e ) {
      System.err.println( e.getClass().getName() + ": " + e.getMessage() );
      System.exit(0);
    }

    System.out.println("Operation done successfully");
    return wi2;

問題を特定せずに申し訳ありません。ここにあります:

rs.next() を呼び出すと SELECT QUERY の問題が発生し、エラー java.lang.NullPointerException が発生しました。

4

1 に答える 1

1

wi[i]is =>インスタンス化する前にnull呼び出すことはできません。次のようにする必要がありますwi[i].wellIDwi[i]

wi[i] = new WellInfo()それから電話するwi[i].wellID

于 2013-09-13T07:17:12.263 に答える