データベースに 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 が発生しました。