为什么这个创建表/插入查询在SQLite / Android中不起作用?

时间:2015-12-08 06:13:08

标签: android mysql sqlite android-studio

创建表格或“插入”查询无效!

public class dbHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "AppointmentsDB";
private static final String TABLE_APPOINTMENTS = "tblAppointments";
private static final String COLUMN_DATE = "dateofapp";
private static final String COLUMN_NAME = "appointment";
private static final String COLUMN_LOCATION = "location";
private static final String COLUMN_Priority = "priority";
private static final String COLUMN_STATUS = "status";

public dbHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
    super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE " + TABLE_APPOINTMENTS + "(" + COLUMN_DATE + " TEXT, "
            + COLUMN_NAME + " TEXT,"
            + COLUMN_LOCATION + " TEXT," +
            COLUMN_Priority + " TEXT," +
            COLUMN_STATUS + " TEXT);";

    db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE  IF EXISTS" + TABLE_APPOINTMENTS);
    onCreate(db);
}

//add new row
public void addAppointment(Appointments appointment) {
    ContentValues values = new ContentValues();
    values.put(COLUMN_DATE, appointment.getDate());
    values.put(COLUMN_NAME, appointment.getName());
    values.put(COLUMN_LOCATION, appointment.getLocation());
    values.put(COLUMN_Priority, appointment.getPriority());
    values.put(COLUMN_STATUS, appointment.getStatus());
    SQLiteDatabase db = getWritableDatabase();
    db.insert(TABLE_APPOINTMENTS, null, values);
    db.close();
}

//delete
public void deleteAppointment(String appName) {
    SQLiteDatabase db = getWritableDatabase();
    db.execSQL("DELETE FROM" + TABLE_APPOINTMENTS + "WHERE" + COLUMN_NAME + "=\"" + appName + "=\";");
}

//display
public String databaseToString() {

    String dbString = "";
    SQLiteDatabase db = getWritableDatabase();
    String sql = "SELECT * FROM " +TABLE_APPOINTMENTS+ "WHERE 1";

    Cursor c = db.rawQuery(sql,null);
    c.moveToFirst();
    while(!c.isAfterLast()){
        if(c.getString(c.getColumnIndex("appointment"))!= null){
            dbString += c.getString(c.getColumnIndex("appointment"));
            dbString += "\n";
        }
    }

    db.close();

    return dbString;
}

public Cursor getAllData (){
    SQLiteDatabase db = getWritableDatabase();
    Cursor res = db.rawQuery("SELECT * FROM " + TABLE_APPOINTMENTS,null);
    return res;
}

}

错误说没有列日期。但是,当我用其他字符串测试它时,它会丢失一些其他列,所以我猜测表没有被创建

  

12-08 00:28:37.443 1436-1436 / com.example.user.testerapp   E / SQLiteLog:(1)表tblAppointments没有名为priority的列   12-08 00:28:37.445 1436-1436 / com.example.nadeeshherath.singervistalife E / SQLiteDatabase:插入优先级错误= android.widget.EditText {304f0d2f VFED..CL ........ 0,372-600,496# 7f0c005e app:id / priText} dateofapp = android.widget.EditText {45cf210 VFED..CL ........ 0,0-630,124#7f0c005c app:id / dateText} status = android.widget.EditText {9071f3c VFED..CL ........ 0,496-600,620#7f0c005f app:id / statusText} location = android.widget.EditText {15b8ff0e VFED..CL ........ 0,248-1350,372# 7f0c005d app:id / locText} appointment = android.widget.EditText {35b42109 VFED..CL .F ...... 0,124-1350,248#7f0c005b app:id / appText}                                                                                            android.database.sqlite.SQLiteException:table tblAppointments没有名为priority的列(代码1):,同时编译:INSERT INTO tblAppointments(priority,dateofapp,status,location,appointment)VALUES(?,?,?,?,?)                                                                                                在android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)                                                                                                在android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)                                                                                                在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)                                                                                                在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)                                                                                                在android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58)                                                                                                在android.database.sqlite.SQLiteStatement。(SQLiteStatement.java:31)                                                                                                在android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)                                                                                                在android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)                                                                                                at com.example.user.testerapp.dbHandler.addAppointment(dbHandler.java:52)                                                                                                在com.example.user.tester.events_activity.addDataButtonClick(events_activity.java:117)                                                                                                at java.lang.reflect.Method.invoke(Native Method)                                                                                                在java.lang.reflect.Method.invoke(Method.java:372)                                                                                                在android.view.View $ 1.onClick(View.java:4002)                                                                                                在android.view.View.performClick(View.java:4756)                                                                                                在android.view.View $ PerformClick.run(View.java:19749)                                                                                                在android.os.Handler.handleCallback(Handler.java:739)                                                                                                在android.os.Handler.dispatchMessage(Handler.java:95)                                                                                                在android.os.Looper.loop(Looper.java:135)                                                                                                在android.app.ActivityThread.main(ActivityThread.java:5221)                                                                                                at java.lang.reflect.Method.invoke(Native Method)                                                                                                在java.lang.reflect.Method.invoke(Method.java:372)                                                                                                在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)                                                                                                在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

0 个答案:

没有答案