2

Androidデータベース開発は初めてです。以下のコードは私の最初のコードです。このコードを実行した後、データベース テーブルに何も挿入されていないことがわかります。コードの何が問題になっていますか?

これは私の dbHelper クラスです:

public class DbHelper extends SQLiteOpenHelper{

    public DbHelper(Context context) {
        super(context, "shit.db", null, 1);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table users (userID integer primary key autoincrement,name text,family text,age integer);";
        Log.d("Ehsan", sql);
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub

    }

}

そして、これは私の主な活動の onCreate メソッドです:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("Ehsan", "Started");

        DbHelper db = new DbHelper(this);
        Log.d("Ehsan", "DB Created");
        SQLiteDatabase mydb =db.getWritableDatabase();

        ContentValues cv = new ContentValues();
        cv.put("name", "Ehsan");
        cv.put("family", "Shirzadi");
        cv.put("age", 29);
        Log.d("Ehsan", "Record inserting");
        long id = mydb.insert("users",null, cv);
        Log.d("Ehsan", "Record inserted");
    }
4

2 に答える 2

5

いくつかあります:

最初にセミコロンを削除する;と、この文字は問題になるだけです。次に、age 列を整数として指定したため、文字列ではなく整数を ContentValues に入力する必要があります。

cv.put("age", 29);

これで動作するはずです。

注:また、列では大文字と小文字が区別されるため、大文字と小文字を同じにする必要があります。このような問題 (列名が正しくない) については、通常、列名を保持する静的フィールドを使用することをお勧めします。

public static final String KEY_AGE = "age";
...
于 2013-10-17T09:10:14.083 に答える
0

年齢フィールドを整数として指定しましたが、そこに文字列を入れようとしています。

これを試して:

ContentValues cv = new ContentValues();
cv.put("Name", "Ehsan");
cv.put("Family", "Shirzadi");
cv.put("Age", 29);
Log.d("Ehsan", "Record inserting");
long id = mydb.insert("users",null, cv);

お役に立てれば :)

于 2013-10-17T09:09:23.180 に答える