我是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");
}
答案 0 :(得分:5)
有一些事情:
首先删除分号;
这个字符只会产生问题。第二个你将age列指定为整数,所以你应该将整数而不是String放入ContentValues:
cv.put("age", 29);
现在应该有效。
注意:此外,列也区分大小写,因此您应保持相同的大写和小写。对于这样的问题(错误的列名称),通常建议使用保留列名称的静态字段:
public static final String KEY_AGE = "age";
...
答案 1 :(得分: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);
希望这有助于:)