0

データベースに 3 つのテーブルを作成する必要があります。そこで、テーブルの列と行を定義し、SQLite コマンドを実行します。ただし、テーブルに値を追加しようとすると、実行時エラーが発生します。これとは反対に、特定のテーブルを 1 つだけ作成し、実行時にそれに値を追加すると、正しく動作しているように見えます。以下は、データベース作成クラスです。

public class StockDatabase extends SQLiteOpenHelper{


public static final String DATABASE_NAME="Accountancy";

public static final int DATABASE_VERSION=7;

public static String createPurchaseTable= "CREATE TABLE stock (_id INTEGER PRIMARY KEY AUTOINCREMENT, item_name TEXT NOT NULL, quant INTEGER NOT NULL, Prate REAl NOT NULL, Srate REAL NOT NULL);";
public static String createSaleTable="CREATE TABLE i/o_register (_id INTEGER PRIMARY KEY AUTOINCREMENT, item_code INTEGER NOT NULL, quantity INTEGER NOT NULL, rate REAL NOT NULL);";
public static String createRegister="CREATE TABLE s/p_register (PartyName TEXT NOT NULL, range TEXT NOT NULL, date TEXT NOT NULL, type INTEGER NOT NULL);";


public StockDatabase(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    // TODO Auto-generated constructor stub

}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL(createPurchaseTable);
    db.execSQL(createSaleTable);
    db.execSQL(createRegister);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF EXISTS stock");
    db.execSQL("DROP TABLE IF EXISTS i/o_register");
    db.execSQL("DROP TABLE IF EXISTS s/p_register");
    onCreate(db);
    }

   }

CASE: データベースに「stock」テーブルのみが作成されている場合。「ストック」テーブルにいくつかの値を追加しようとすると、完璧に機能します。

ケース: データベースに 3 つのテーブルが作成されたときに、在庫テーブルに値を追加しようとしましたが、nullPointerException が発生しました。

4

4 に答える 4

0

データベースのバージョンを増やします。常に動作します。

于 2013-08-26T07:19:06.367 に答える