gpt4 book ai didi

Android SqLite 没有这样的列_id 异常

转载 作者:行者123 更新时间:2023-11-29 14:53:36 24 4
gpt4 key购买 nike

不要立即标记我重复的问题。我的问题有所不同,因为我有一个格式正确的 SQL 查询。

public static final String TABLE_NAME = "log";
public static final String COLUMN_ID = "_id";
public static final String LOG_TEXT = "logtext";
private static final String TABLE_CREATE = "CREATE TABLE " + TABLE_NAME + " (" +
COLUMN_ID + " integer primary key autoincrement, " +
LOG_TEXT + " TEXT not null);";

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_CREATE);

}

我在这里查询

String[] columns = {LOG_TEXT,COLUMN_ID};
Cursor cursor = helper.getReadableDatabase().query(TABLE_NAME, columns, null, null, null, null, COLUMN_ID + " desc");

我发现了包含 sql 查询的异常生成。

catch(Exception e){
Log.D("sql Exception",e.getMessage());}

它返回

no such column: _id: , while compiling: SELECT logtext, _id FROM log ORDER BY _id desc

我总体上熟悉 Oracle SQL 和关系数据库。是我的 ORDER BY 子句吗?我确信你总是可以使用 order by。它的行为与 GROUP BY 不同。

关于异常原因的任何想法?如果有人想看到我正在使用我的 ArrayAdaptor 语句进行更新。我在 ListView 中使用光标

String[] data = query();


adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, data);
listView.setAdapter(adapter);}

最佳答案

重写

每当您更改 TABLE_CREATE 中的架构时,您必须将这些更改通知您的应用程序,它们不会在您更改 TABLE_CREATE 时自动发生。最简单的方法是在扩展的 SQLiteOpenHelper 类中增加 database_version。您发现您也可以卸载/重新安装该应用程序,以获得相同的结果。如果您精通 SQL,则可以更改表。但是无论使用哪种方法,您都必须确保您的应用程序在尝试访问新列之前更改了架构...

也适用于 SQLite:

_id integer primary key

synonymous与:

_id integer primary key autoincrement not null

并且查询使用降序作为默认顺序,因此 ORDER BY _idORDER BY _id DESC 相同。

关于Android SqLite 没有这样的列_id 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com