我在这里搜索了一段时间没有任何帮助。我想这很简单,我做的事情很愚蠢。所以,我有这个DataBaseHelper创建一个表并在其上放两个值:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "db";
public static final String PROPERTY = "property";
public static final String VALUE = "value";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE configs (property VARCHAR(15), value VARCHAR(10));");
ContentValues cv=new ContentValues();
cv.put(PROPERTY, "registered");
cv.put(VALUE, "true");
db.insert("configs", PROPERTY, cv);
cv.put(PROPERTY, "test");
cv.put(VALUE, "test");
db.insert("configs", PROPERTY, cv);
}
}
在我的活动中尝试:
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
layout = (LinearLayout) findViewById(R.id.layoutRegister);
db = (new DatabaseHelper(this)).getWritableDatabase();
cursor = db.rawQuery("SELECT * FROM configs",
null);
if (cursor.moveToFirst()) {
debug = new TextView(this);
debug.setText(cursor.getString(cursor.getColumnIndex("property")));
layout.addView(debug);
}
}
它永远不会进入if。此外,当我尝试像cursor.getCount()这样的东西时,我得到一个 android.content.res.Resource $ NotFoundException:字符串资源ID#0x0
我想这是一个简单的错误,但是......有什么帮助吗? = S
答案 0 :(得分:6)
我理解你想要在光标有值时设置文本,这样你就可以做到这一点......
cursor = db.rawQuery("SELECT * FROM configs", null);
if (cursor!=null && cursor.getCount()>0) {
cursor.moveToFirst();
debug = new TextView(this);
debug.setText(cursor.getString(cursor.getColumnIndex("property")));
layout.addView(debug);
}
关于
when I try something like cursor.getCount() I get a android.content.res.Resource$NotFoundException: String resource ID #0x0
这是因为当你使用TextView的setText()时,如果你将参数作为Integer传递,那么它将在R.class文件中查找,所以如果你想将文本设置为整数,你可以做类似......
debug.setText(""+cursor.getCount());
或
debug.setText(String.valueOf(cursor.getCount()));
答案 1 :(得分:2)
如果您要查询,请使用 getReadableDatabase 而非 getWritableDatabase
始终 cursor.close();
答案 2 :(得分:-1)
使用此
cv.put(property, "registered");
cv.put(value, "true");
和
cv.put(property, "test");
cv.put(value, "test");
而不是
cv.put(PROPERTY, "registered");
cv.put(VALUE, "true");
和
cv.put(PROPERTY, "test");
cv.put(VALUE, "test");