在Android中创建Sqlite表

时间:2012-08-22 08:39:20

标签: android sql sqlite

我尝试在数据库中创建三个表,但它只创建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);
    }

3 个答案:

答案 0 :(得分:1)

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

我建议你修改如下,

final String CREATE_TABLE_MAPLOCATION = "CREATE TABLE tbl_locationfrommap (" +  " latitude INTEGER PRIMARY KEY"+" , longitude INTEGER UNIQUE );";

答案 1 :(得分:1)

基本的sql问题。 从

更改sql

CREATE TABLE tbl_locationfrommap(“+”纬度INTEGER PRIMARY KEY“+”,经度INTEGER PRIMARY KEY)

CREATE TABLE tbl_locationfrommap(“+”纬度INTEGER“+”,经度INTEGER,PRIMARY KEY(纬度,经度))

如果您打算创建配对主键

答案 2 :(得分:0)

在表格中,您只能指定一个主键

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

final String CREATE_TABLE_MAPLOCATION = "CREATE TABLE tbl_locationfrommap (" + "id INTEGER PRIMARY KEY"+  " latitude INTEGER"+" , longitude INTEGER );";