我想使用id搜索列 该函数将返回该特定行中的所有值。
这是我的代码和日志。
LOG :
09-19 14:00:54.940 618-618/? **I/SqliteDatabaseCpp﹕ sqlite returned: error code = 1, msg = table IUBConnectivitydata already exists, db=/data/data/com.example.sivs.datacopy/databases/**
09-19 14:00:54.970 618-618/? E/SQLiteOpenHelper﹕ Couldn't open Database1 for writing (will try read-only):
代码:
public Cursor Rowdata(String a){
SQLiteDatabase db=this.getReadableDatabase();
Log.d("a4","aaa34");
Cursor cursor1=db.rawQuery("SELECT "+COL_3+", FROM" + TABLE_NAME + "where WBTSID==?",new String[] {a});
Log.d("a3","row");
return cursor1;
}
答案 0 :(得分:1)
你在FROM之前添加了一个额外的逗号,一个额外的=之前?并忘记了表名周围的2个空格。
错:
db.rawQuery("SELECT "+COL_3+", FROM" + TABLE_NAME + "where WBTSID==?",new String[] {a});
右:
db.rawQuery("SELECT "+COL_3+" FROM " + TABLE_NAME + " where WBTSID=?",new String[] {a});
答案 1 :(得分:0)
我建议只有一个全局数据库助手类实例,它可以位于扩展的应用程序类中。辅助类本身必须包含SQLiteDatabase
的实例,它是实际的数据库对象。
然后你不必担心可能相互锁定的多个实例。
它看起来像这样:
public MyClass extends Application {
private MyDBHelper db;
public MyDBHelper getDB() {
if (database == null) {
db = new MyDBHelper(this);
}
db.open(); // call getWritableDataBase internally
return db;
}
}
如果您在SqlLiteHelpers onCreate()
回调中创建数据库,那么只应在安装后第一次打开应用程序时创建它。
在SqlLitehelper的onOpen()
回调中,您可以使用setForeignKeyConstrainsEnabled(true)
激活外键约束,这是一项重要的安全功能。您必须使用REFERS()
子句声明外键。
编辑:也可以创建同步的静态实例(如下面的注释中所述)。无论如何,您必须确保只存在数据库帮助程序类的一个实例,并且只存在数据库本身的一个实例。 (必须位于数据库助手类中)
答案 2 :(得分:0)
尝试以下,
if (c.moveToFirst()){
do{
id = c.getInt(c.getColumnIndex("_id"));
}while(cursor.moveToNext());
}
c是所有数据的光标。