私はチュートリアルに従い、Android用のSQLiteデータベースを作成しました。SQLiteデータベース、5列以上を追加できません
dbは6列未満でうまく機能しますが、6列目を追加してデータを挿入しようとすると、何も挿入されずにアプリケーションがクラッシュします。
これは私のデータベースが13の列を持つ必要があるので、問題です。
以下はdbのコードであり、私の主な活動のコードでもあり、ユーザーの入力によってデータベースにデータを挿入します。
public class DataBaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Student.db";
public static final String TABLE_NAME = "student_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "EVENTS";
public static final String COL_3 = "DETAILS";
public static final String COL_4 = "ALLOCATION";
public static final String COL_5 = "TEST";
public static final String COL_6 = "TESTt";
public DataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,EVENTS TEXT,DETAILS TEXT,ALLOCATION TEXT, TEST TEXT, TESTt TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
public boolean insertData(String event,String details,String allocation,String test, String testt) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2,event);
contentValues.put(COL_3,details);
contentValues.put(COL_4,allocation);
contentValues.put(COL_5,test);
contentValues.put(COL_6,testt);
long result = db.insert(TABLE_NAME,null ,contentValues);
if(result == -1)
return false;
else
return true;
}
public Cursor getAllData() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
return res;
}
public boolean updateData(String id,String event,String details,String allocation,String test,String testt) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_1,id);
contentValues.put(COL_2,event);
contentValues.put(COL_3,details);
contentValues.put(COL_4,allocation);
contentValues.put(COL_5,test);
contentValues.put(COL_6,testt);
db.update(TABLE_NAME, contentValues, "ID = ?",new String[] { id });
return true;
}
public Integer deleteData (String id) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(TABLE_NAME, "ID = ?",new String[] {id});
}
とメイン
public void AddData() {
add.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isInserted = myDb.insertData(tv.getText().toString(),
details.getText().toString(),
tktal.getText().toString(),
gen.getText().toString(),
genamt.getText().toString()
);
if (isInserted == true)
Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_LONG).show();
}
}
);
}
で、私はここに欠けているように見える紛れも明白なものはありますか?それは非常にイライラしています!
** tl; dr **より多くの列を追加するには、データベースのバージョンを変更し、**データベースを再作成**する必要があります。 –