我在名为CalDatabaseHelper的单独类中创建一个包含4个String列的数据库:
public void onCreate(SQLiteDatabase db) {
updateDatabase(db,0,DATABASE_VERSION);
}
private static void updateDatabase(SQLiteDatabase db, int olderversion, int newerVersion){
if (olderversion < 1){
db.execSQL("CREATE TABLE CAL (_id TEXT PRIMARY KEY,"
+ "ACTIVITY1 TEXT, "
+ "ACTIVITY2 TEXT"
+ "ACTIVITY3 TEXT);");
}
}
private static void insertIntoDatabase(SQLiteDatabase db, String primaryKey, String activityOne, String activityTwo, String activityThree){
ContentValues values = new ContentValues();
values.put("_id",primaryKey);
values.put("ACTIVITY1",activityOne);
values.put("ACTIVITY2",activityTwo);
values.put("ACTIVITY3",activityThree);
db.insert("CAL",null,values);
}
我在名为约会的活动中添加数据。现在,我只是添加到_id(一个String变量)和ACTIVITY1(一个来自用户输入和EditText的String变量)列:
SQLiteOpenHelper sqLiteOpenHelper = new CalDatabaseHelper(Appointments.this);
SQLiteDatabase db = sqLiteOpenHelper.getWritableDatabase();
values.put("_id",primaryKey);
values.put("ACTIVITY1", activityOne);
db.insert("CAL", null, values);
db.close();
我尝试在Adapter Class中检索此数据。单击窗口小部件后,将打开一个数据库,Cursor将找到两列(_id,ACTIVITY1)并检索数据。该类包含用于搜索数据库的primaryKey数据:
SQLiteOpenHelper sqLiteOpenHelper = new CalDatabaseHelper(context);
db = sqLiteOpenHelper.getReadableDatabase();
cursor = db.query("CAL",
new String[]{"_id","ACTIVITY1"},
"_id = ?",
new String[]{month_day_year},
null, null, null);
if (cursor.moveToFirst()){
String actOne = cursor.getString(0);
activityOne.setText(actOne);
}else{
Toast.makeText(context, "NOTHING FOUND DURING OPEN", Toast.LENGTH_LONG).show();
}
cursor.close();
db.close();
到目前为止,一切正常。我可以使用cursor.getString(0)从第一列(_id)中检索数据。
当我从第二列(ACTIVITY1)中检索数据时,我不断得到一个空字符串。例如,cursor.getString(1)返回“”。这应该是我的用户在约会活动中输入的数据。数据显然放在该类中的ContentValues中,然后放入数据库。知道为什么没有什么东西出现吗?是因为我使用db.insert()而不是我在databaseHelper类中创建的方法insertIntoDatabase()?然后如何插入主键呢?谢谢