Android 在数据库中插入数据时出错

Android 在数据库中插入数据时出错,android,sqlite,Android,Sqlite,我试图在本地数据库中保存一些值。该数据库除de ID列外还有3列,分别为:名称、组、顺序 public class TravelOrderDatabaseHelper extends SQLiteOpenHelper { public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + TravelOrder._ID + "

我试图在本地数据库中保存一些值。该数据库除de ID列外还有3列,分别为:名称、组、顺序

public class TravelOrderDatabaseHelper extends SQLiteOpenHelper {
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
                TravelOrder._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                TravelOrder.NAME + " TEXT NOT NULL, " +
                TravelOrder.GROUP + " TEXT NOT NULL, " +
                TravelOrder.ORDER + " TEXT NOT NULL " +
                ");");
    }
-

在主活动中,要将值保存在数据库中,我使用以下方法:

private void insertTraveler(String name, String group, String order){
    ContentValues newValues = new ContentValues();
    newValues.put(TravelOrder.NAME, name);
    newValues.put(TravelOrder.GROUP, group);
    newValues.put(TravelOrder.ORDER, order);

    getContentResolver().insert(TravelOrderProvider.CONTENT_URI, newValues);
}
但这就是我在日志上看到的:

06-04 15:21:46.919: E/AndroidRuntime(30381): FATAL EXCEPTION: main
06-04 15:21:46.919: E/AndroidRuntime(30381): android.database.sqlite.SQLiteException: near "group": syntax error: , while compiling: CREATE TABLE travelorder (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL, group TEXT NOT NULL, order TEXT NOT NULL );
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:134)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:260)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:84)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:2006)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1946)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at com.irvvin.carpooling.data.TravelOrderDatabaseHelper.onCreate(TravelOrderDatabaseHelper.java:29)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:165)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at com.irvvin.carpooling.data.TravelOrderProvider.insert(TravelOrderProvider.java:73)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.content.ContentProvider$Transport.insert(ContentProvider.java:200)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.content.ContentResolver.insert(ContentResolver.java:734)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at com.irvvin.carpooling.NewTravelActivity.insertTraveler(NewTravelActivity.java:429)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at com.irvvin.carpooling.NewTravelActivity.sendTravelersToOrder(NewTravelActivity.java:243)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at com.irvvin.carpooling.NewTravelActivity.access$1(NewTravelActivity.java:238)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at com.irvvin.carpooling.NewTravelActivity$1.onClick(NewTravelActivity.java:145)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.view.View.performClick(View.java:3549)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.view.View$PerformClick.run(View.java:14393)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.os.Handler.handleCallback(Handler.java:605)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.os.Handler.dispatchMessage(Handler.java:92)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.os.Looper.loop(Looper.java:154)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at android.app.ActivityThread.main(ActivityThread.java:4944)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at java.lang.reflect.Method.invokeNative(Native Method)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at java.lang.reflect.Method.invoke(Method.java:511)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-04 15:21:46.919: E/AndroidRuntime(30381):    at dalvik.system.NativeStart.main(Native Method)
不能将组用作表名,因为它内置于sqlite的关键字中。。使用不同的关键字组和顺序都是Sqlite中的关键字。此处不能将它们用作列名。更改

public static final String GROUP = "group"; // "group_column"
public static final String ORDER = "order"; // "order_colomn"

请参阅列表。

您正在使用sqlite关键字作为列名,即组和顺序

请参阅sqlite中的详细信息组是保留字将其更改为其他TravelOrder.GroupAlOrder是保留关键字order是保留关键字
public static final String GROUP = "group"; // "group_column"
public static final String ORDER = "order"; // "order_colomn"