-1

データベースに 3 つのテーブルを作成しようとしましたが、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は1 つだけです。テーブルの作成中に 2 つの主キーを追加しました。

次のように変更することをお勧めします。

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 (" + " 緯度 INTEGER PRIMARY KEY"+" , 経度 INTEGER PRIMARY KEY)

CREATE TABLE tbl_locationfrommap (" + " 緯度 INTEGER"+" , 経度 INTEGER, PRIMARY KEY(緯度, 経度))

ペアの主キーを作成する場合

于 2012-08-22T08:45:26.260 に答える
0

テーブルでは、主キーを 1 つだけ割り当てることができます。

別のフィールド ID を作成し、それをプライマリにして、緯度と経度から削除します。

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