使用整数创建表作为主键不起作用而不是android

kan*_*nde 0 database sqlite android

我正在尝试使用整数作为主键创建表,但它不起作用.这是错误:

11-02 11:17:24.833:ERROR/AndroidRuntime(4781):引起:android.database.sqlite.SQLiteException:接近"0":语法错误:CREATE TABLE tremp_db(0 INTEGER PRIMARY KEY AUTOINCREMENT,date TEXT,time TEXT ,重复TEXT,gamish TEXT,src_city TEXT,src_area TEXT,dest_city TEXT,dest_area TEXT,price TEXT,TEXT,phone TEXT,email TEXT,text TEXT,update_time TEXT);

有人知道究竟是什么问题?

感谢名单...

这是代码:

public class Data
{
    private static String DATABASE_NAME = new String("db_carpool.db");
    public static final int DATABASE_VERSION = 7; 
    public static String TABLE_NAME = new String("tremp_db");
    public static int ID;
    public static String DATE = new String("date");
    private static String TIME = new String("time");
    private static String REPEAT = new String("repeat");
    private static String GAMISH = new String("gamish");
    private static String SRC_CITY = new String("src_city");
    public static String SRC_AREA = new String("src_area");
    public static String DEST_CITY = new String("dest_city");
    private static String DEST_AREA = new String("dest_area");
    private static String PRICE = new String("price");
    private static String WHO = new String("who");
    public static String PHONE = new String("phone");
    public static String EMAIL = new String("email");
    private static String TEXT = new String("text");
    private static String UPDATE_TIME = new String("update_time");

    final Data thisActivity = this;

    private DatabaseHelper mOpenHelper = null; 
    private static Data datab = null;

    private class DatabaseHelper extends SQLiteOpenHelper 
    { 
        DatabaseHelper(Context context) 
        { 
            super(context, DATABASE_NAME, null , DATABASE_VERSION); 
        } 

        @Override
        public void onCreate(SQLiteDatabase db) 
        {
            db.execSQL("CREATE TABLE " + TABLE_NAME + " ( " 
                    + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
                    + DATE + " TEXT, " 
                    + TIME + " TEXT, " 
                    + REPEAT + " TEXT, " 
                    + GAMISH + " TEXT, " 
                    + SRC_CITY + " TEXT, " 
                    + SRC_AREA + " TEXT, " 
                    + DEST_CITY + " TEXT, " 
                    + DEST_AREA + " TEXT, " 
                    + PRICE + " TEXT, " 
                    + WHO + " TEXT, " 
                    + PHONE + " TEXT, " 
                    + EMAIL + " TEXT, " 
                    + TEXT + " TEXT, " 
                    + UPDATE_TIME + " TEXT" + ");"); 
        }


        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
        {
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
            onCreate(db);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是插入表中的函数的代码

void NewTremp(Tremp tremp, Context context)
    {       
        ContentValues values = new ContentValues();
        //values.put(ID, tremp.id);
        values.put(DATE, tremp.date);
        values.put(TIME, tremp.time);
        values.put(REPEAT, tremp.repeat);
        values.put(GAMISH, tremp.gamish);
        values.put(SRC_CITY, tremp.src_city);
        values.put(SRC_AREA, tremp.src_area);
        values.put(DEST_CITY, tremp.dest_city);
        values.put(DEST_AREA, tremp.dest_area);
        values.put(PRICE, tremp.price);
        values.put(WHO, tremp.who);
        values.put(PHONE, tremp.phone);
        values.put(EMAIL, tremp.email);
        values.put(TEXT, tremp.text);
        values.put(UPDATE_TIME, tremp.update);
        SQLiteDatabase db = mOpenHelper.getWritableDatabase(); 

        long rowId = db.insert(TABLE_NAME, null, values);
//      handler.sendEmptyMessage(0);
    }
Run Code Online (Sandbox Code Playgroud)

tha*_*sma 5

尝试将类型更改public static int ID;为String:

public static String ID = "_id";
Run Code Online (Sandbox Code Playgroud)

如果要将db与CursorAdapter一起使用,则需要将ID列命名为"_id"

编辑:

ID类型String是列的只是名字.列的类型在create table语句中定义:

db.execSQL("CREATE TABLE " + TABLE_NAME + " ( " 
                + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
Run Code Online (Sandbox Code Playgroud)

因为您使用了intas列名,所以您的列是以此整数的字符串表示形式命名的.