java - Android SQLite 对表列的排序方式不同

标签 java android database sqlite

我正在设置一个 SQLite 数据库,并且我已经按照我认为应该的方式设置了大部分内容。主要错误在于列不在应有的位置。我在字符串中初始化了数据库列名称,如下所示:

public static final String KEY_ROWID = "_id";
public static final String KEY_SPORT = "given_sport";
public static final String KEY_NAME = "given_name";
public static final String KEY_DATE = "given_date";
public static final String KEY_TIME = "given_time";
public static final String KEY_PERIOD = "given_period";
public static final String KEY_LOCATION = "given_location";

当需要创建一个包含列名的表时:

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
                KEY_SPORT + " TEXT NOT NULL, " + 
                KEY_NAME + " TEXT NOT NULL, " + 
                KEY_DATE + " TEXT NOT NULL, " + 
                KEY_TIME + " TEXT NOT NULL, " + 
                KEY_PERIOD + " TEXT NOT NULL, " + 
                KEY_LOCATION + "TEXT NOT NULL);"
);

现在的问题是我收到以下错误:

05-27 04:13:01.448: E/Database(273): android.database.sqlite.SQLiteException: 表 groupTable 没有名为给定位置的列: 编译时: INSERT INTO groupTable(given_location,给定时间,给定日期、给定期间、给定运动、给定名称) VALUES(?, ?, ?, ?, ?, ?);

表名似乎被重新排序,这就是导致插入错误的原因。虽然我一无所知,但我真的很感激一些帮助。

编辑:这是 INSERT 命令

    ContentValues cv = new ContentValues();
    cv.put(KEY_SPORT, sportInput);
    cv.put(KEY_NAME, nameInput);
    cv.put(KEY_DATE, dateInput);
    cv.put(KEY_TIME, timeInput);
    cv.put(KEY_PERIOD, periodInput);
    cv.put(KEY_LOCATION, locationInput);
    return dbSQL.insert(DATABASE_TABLE, null, cv);

最佳答案

问题可能是您更改了数据库结构,但没有更改数据库版本。这是一个奇怪的问题,我第一次不得不花很多时间来解决。

在您的 DatabaseHelper 类中应该有一个版本号,只要在更改任何表架构等时将其增加 1 即可。

编辑

您在创建 SQL 表时在“TEXT”之前缺少一个空格。

应该是:

... + KEY_LOCATION+“文本”...

修复该问题后,再次增加版本号。

关于java - Android SQLite 对表列的排序方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10771610/

相关文章:

mysql - Docker搭建mysql数据库环境

java - ANDROID - session /数据库连接管理(社交应用)

java - 如何在(a)Smack中获取 'http://jabber.org/protocol/nick'扩展值?

java - 检查字符串是否等于引号

java - 搜索 Firestore 查询不在 RecycleView 中显示数据

android - Room 上的嵌套嵌入列表

django - Django ORM 中的 SQL 何时执行

java - 如果我重写 onTouchEvent 方法, map View 缩放控件不会显示

java - 这一行应该是什么? ( java )

java - 在 firebase 数据库中按日期排序