-1

我尝试在数据库中创建三个表,但它只创建 tbl_alarms、tbl_bookmarks 和 android_metadata。为什么我不能创建 tbl_locationfrommap ?

    SQLiteDatabase db;
    db = openOrCreateDatabase("Informations.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
    db.setVersion(1);
    db.setLocale(Locale.getDefault());
    db.setLockingEnabled(true);
    Cursor cursor=db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = 'tbl_alarms'", null);

    if(cursor.getCount()==0) {
        final String CREATE_TABLE_ALARMS = "CREATE TABLE tbl_alarms (" + 
                                               "alarmName TEXT PRIMARY KEY," + 
                                               " distance INTEGER, 
                                                 ringtone TEXT, 
                                                 vibrate INTEGER, 
                                                 latitude INTEGER, 
                                                 longitude INTEGER, 
                                                 note TEXT, 
                                                 alarmTime LONG, 
                                                 alarmSnoozeTime LONG);";
        final String CREATE_TABLE_BOOKMARKS = "CREATE TABLE tbl_bookmarks (" +
                                              "bookmarkName TEXT PRIMARY KEY," + 
                                              "latitude INTEGER, 
                                               longitude INTEGER);";
        final String CREATE_TABLE_MAPLOCATION = "CREATE TABLE tbl_locationfrommap (" +
                                                "latitude INTEGER PRIMARY KEY"+
                                                " , longitude INTEGER PRIMARY KEY);";
        db.execSQL(CREATE_TABLE_ALARMS);
        db.execSQL(CREATE_TABLE_BOOKMARKS);
        db.execSQL(CREATE_TABLE_MAPLOCATION);
    }
4

3 回答 3

1

表中只能有一个PRIMARY KEY。您在创建表时添加了两个主键。

我建议你修改如下,

final String CREATE_TABLE_MAPLOCATION = "CREATE TABLE tbl_locationfrommap (" +  " latitude INTEGER PRIMARY KEY"+" , longitude INTEGER UNIQUE );";
于 2012-08-22T08:42:42.920 回答
1

基本的sql问题。更改 sql 从

CREATE TABLE tbl_locationfrommap (" + " 纬度整数主键"+" ,经度整数主键)

CREATE TABLE tbl_locationfrommap (" + " latitude INTEGER"+" , longitude INTEGER, PRIMARY KEY(latitude, longitude))

如果您打算创建对主键

于 2012-08-22T08:45:26.260 回答
0

在表中,您只能分配一个Primary Key

创建另一个字段 id 并将其设为主要并将其从纬度和经度中删除。

final String CREATE_TABLE_MAPLOCATION = "CREATE TABLE tbl_locationfrommap (" + "id INTEGER PRIMARY KEY"+  " latitude INTEGER"+" , longitude INTEGER );";
于 2012-08-22T08:41:38.227 回答