SQLite Android Java,其中“表___没有名为___的列”[已关闭]

nhaq1z21  于 2022-12-21  发布在  Android
关注(0)|答案(1)|浏览(104)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
11小时前关门了。
Improve this question
我目前正尝试将数据添加到SQLite中,但我遇到了一个问题,即booked_dobby_name的列未在我的表中创建。我检查了myDatabaseHelper.java无数次,但我仍然无法理解导致此问题发生的问题。我检查了查询,我确实认为我的格式是正确的。以下是我的代码(MyDatabaseHelper.java):

class MyDatabaseHelper extends SQLiteOpenHelper {

    private Context context;
    private static final String DATABASE_NAME = "BookedSlots.db";
    private static final int DATABASE_VERSION = 1;

    private static final String TABLE_NAME = "Booked_Reservation";
    private static final String COLUMN_ID = "_id";
    private static final String COLUMN_DATE = "booked_date";
    private static final String COLUMN_START_TIME = "booked_start_time";
    private static final String COLUMN_END_TIME = "booked_end_time";
    private static final String COLUMN_MACHINE_ID = "booked_machine_id";
    private static final String COLUMN_DOBBY_NAME = "booked_dobby_name";

    MyDatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String query = "CREATE TABLE " +
                TABLE_NAME +
                " (" +
                COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                COLUMN_DATE + " TEXT, " +
                COLUMN_START_TIME + " TEXT, " +
                COLUMN_END_TIME + " INTEGER, " +
                COLUMN_MACHINE_ID + " TEXT, " +
                COLUMN_DOBBY_NAME + " TEXT" +
                ");";
        db.execSQL(query);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    void addBook(String date, int startTime, int endTime, String machineID, String dobbyname) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_DATE, date);
        cv.put(COLUMN_START_TIME, startTime);
        cv.put(COLUMN_END_TIME, endTime);
        cv.put(COLUMN_MACHINE_ID, machineID);
        cv.put(COLUMN_DOBBY_NAME, dobbyname);

        long result = db.insert(TABLE_NAME, null, cv);
        if (result == -1) {
            Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, "Added Successfully!", Toast.LENGTH_SHORT).show();
        }
    }

    Cursor readAllData() {
        String query = "SELECT * FROM " + TABLE_NAME;
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = null;
        if (db != null) {
            cursor = db.rawQuery(query, null);
        }
        return cursor;
    }

    void deleteOneRow(String row_id){
        SQLiteDatabase db = this.getWritableDatabase();
        long result = db.delete(TABLE_NAME, "_id=?", new String[]{row_id});
        if(result == -1){
            Toast.makeText(context, "Failed to Delete.", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(context, "Successfully Deleted.", Toast.LENGTH_SHORT).show();
        }
    }

}

在我的www.example.com中BookingActivity.java,我调用数据库来向其中添加数据:

public void addDatabase(){
    MyDatabaseHelper myDB = new MyDatabaseHelper(BookingActivity.this);
    myDB.addBook(temp.trim(), startTime, endTime, machineID.trim(), dobbyName.trim());
}

我对这个特殊的问题感到困惑,因为我认为我已经实现了在SQLite中设置表的所有必要步骤。

j8ag8udp

j8ag8udp1#

有一个错误,而创建表,尝试这个,让我知道,如果你面临同样的错误。

@Override
public void onCreate(SQLiteDatabase db) {
    String query = "CREATE TABLE " +
            TABLE_NAME +
            " (" +
            COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            COLUMN_DATE + " TEXT, " +
            COLUMN_START_TIME + " TEXT, " +
            COLUMN_END_TIME + " INTEGER, " +
            COLUMN_MACHINE_ID + " TEXT, " +
            COLUMN_DOBBY_NAME + " TEXT)"; //here was additional semicolon which was occuring the issue.
    db.execSQL(query);
}

创建表时出现语法错误。

相关问题