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

有几件事:

起初删除分号;这个字符只会产生问题。其次,您将年龄列指定为整数,因此您应该将整数而不是字符串放入 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 回答