2

ここでしばらく検索しましたが、何も役に立ちませんでした。私はそれが簡単だと思います、私は愚かなことをしています。したがって、この DataBaseHelper でテーブルを作成し、それに 2 つの値を設定します。

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: String resource ID #0x0が発生します。

単純な間違いだと思いますが... 何か助けはありますか? =s

4

3 に答える 3

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()));
于 2012-11-08T04:17:14.497 に答える
2

クエリを実行する場合は、getWritableDatabase ではなくgetReadableDatabaseを使用します

そして、いつもcursor.close();

于 2012-11-08T04:21:24.257 に答える
-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");
于 2012-11-08T04:18:57.557 に答える