我试图从具有表(带有_id字段)的数据库中检索游标,但无法创建simplecursoradapter,错误为
SqlliteException: no such column: _id
但我的数据库类有什么问题:
//The columns we'll include in the dictionary table
public static final String COLUMN_ID = "_id";
public static final String COL_WORD = "WORD";
public static final String COL_DEFINITION = "DEFINITION";
private static final String FTS_TABLE_CREATE =
"CREATE VIRTUAL TABLE " + FTS_VIRTUAL_TABLE +
" USING fts3 (" + COLUMN_ID + " integer primary key autoincrement, " +
COL_WORD + ", " +
COL_DEFINITION + ")";
然后返回光标
public Cursor getWordMatches(String query, String[] columns) {
String selection = COL_WORD + " MATCH ?";
String[] selectionArgs = new String[] {query+"*"};
return query(selection, selectionArgs, columns);
}
private Cursor query(String selection, String[] selectionArgs, String[] columns) {
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(FTS_VIRTUAL_TABLE);
String[] col = new String[] {COLUMN_ID, COL_WORD};
//ubacio null - col
Cursor cursor = builder.query(mDatabaseOpenHelper.getReadableDatabase(),
col, selection, selectionArgs, null, null, null);
if (cursor == null) {
return null;
} else if (!cursor.moveToFirst()) {
cursor.close();
return null;
}
return cursor;
}
这是我显示ListView的活动
//query the db class method getWordMatches()
Cursor c = db.getWordMatches(query, null);
displayWords(c);
}
}
public void displayWords(Cursor c){
// Creates a new SimpleCursorAdapter
SimpleCursorAdapter mCursorAdapter = new SimpleCursorAdapter(
getApplicationContext(), // The application's Context object
android.R.layout.simple_list_item_1, // A layout in XML for one row in the ListView
c, // The result from the query
new String[] {DatabaseTable.COL_WORD}, // A string array of column names in the cursor
new int[] { android.R.id.text1 }); // An integer array of view IDs in the row layout
// Sets the adapter for the ListView
setListAdapter(mCursorAdapter);
}
教程来自http://developer.android.com/training/search/search.html
作为CursorAdpater类的一个要求,基础的光标对象必须包含一个名为“_id”的列,这就是为什么会出现这个错误。这是直接从CursorAdapter文档:http://developer.android.com/reference/android/widget/CursorAdapter.html
您需要使用别名将FTS'rowid
更改为Android的\u id
:
String[] col = new String[] {"rowid as " + COLUMN_ID, COL_WORD};
FTS不允许您重写主键的默认列名,因为整数主键自动增量被完全忽略为语法糖。事实上,FTS只是将您的_id
列解释为泛型列...
因此,您应该从create-table语句中删除_id
,否则它会添加一个额外的_id
列:
private static final String FTS_TABLE_CREATE =
"CREATE VIRTUAL TABLE " + FTS_VIRTUAL_TABLE +
" USING fts3 (" + COL_WORD + ", " + COL_DEFINITION + ")";
我正在尝试用铁轨在条纹中创建一个一次性的单次充电。我得到以下错误: 不过,从照片中可以清楚地看到,令牌在参数中。该令牌来自Stripe.js。 下面是我的控制器中的代码:
我正在尝试运行一个jruby应用程序。每当我启动jruby脚本时,应用程序就会抛出一个错误 loaderror:没有这样的文件可加载--openssl/dummy(root)在/home/ubuntu/.rvm/gems/jruby-1.7.3/gems/jruby-0.8.2/lib/shared/jruby-openssl.rb:15 require at org/jruby/rubykern
我正在尝试用Tesseract OCR阅读器阅读pdf。不过,它对图像文件非常有效。 以下是我所做的: > 创建一个Maven项目 添加了tess4j版本4.4.1作为依赖项 将java版本更改为13 添加了以下代码: 之后,我发现以下错误: 我该如何着手解决这个问题?
我有一个简单的Spring云配置服务器,它使用git服务器的配置。 ConfigServer引导。yml: 当我在本地部署ConfigServer时,我可以从http://localhost:8888/myapp/test 。但当我在测试服务器上部署ConfigServer时,当我点击
我有以下使用嵌套游标的代码。它们都不是空的,但我在内部游标上收到错误“android.database.CursorIndexOutOfBoundsException: Index 0请求,大小为0”。 getName()方法: 我无法理解我在哪里做错了。有没有不同的方法来处理sqlite db中的嵌套游标。请帮助。 谢谢
NoSuChelementException:消息:没有这样的元素:找不到元素:{“method”:“id”,“selector”:“id”} 求求你了。帮助我^^