在我的android程序中,我想创建sq-lite数据库,其中应该有三列,所以对于每个第一列,第三列应该有最多四个条目,那么我应该如何创建呢?并且我想要使用像insert,update,get all,delete这样的方法,并且应该有一个可以将第一列作为参考并从第三列操作条目。所以请建议我如何实现这一点。
答案 0 :(得分:1)
要在android中创建SQLite数据库,你必须创建一个扩展SQLiteOpenHelper的类,然后在onCreate中覆盖onCreate和onUpgrade方法,你可以创建如下表:
public class DBOpenHelper extends SQLiteOpenHelper {
private SQLiteDatabase mWritableDB;
private SQLiteDatabase mReadableDB;
private static final String USER_TABLE_NAME = "user";
private static final String USER_COL_ID = "id";
private static final String USER_COL_NAME = "userName";
private static final String USER_COL_AGE = "age";
private static final String QUERY_USER_CREATE_TABLE =
"CREATE TABLE " + USER_TABLE_NAME + " (" + USER_COL_ID + " INTEGER PRIMARY KEY, " +
USER_COL_NAME + " TEXT, " + USER_COL_AGE + " INTEGER DEFAULT 0 );";
public DBOpenHelper(Context context) {
super(context, DBName, null, DBVersion);
mReadableDB = getReadableDatabase();
mWritableDB = getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
Log.e("query", QUERY_USER_CREATE_TABLE);
sqLiteDatabase.execSQL(QUERY_USER_CREATE_TABLE);
}
在构造函数传递活动的上下文,DBName,cursorfactory(null),DBVersion和获取getReadable和可写数据库的实例,以便您可以使用这些实例执行插入更新和搜索查询,如下所示:
//to insert a user Value in localDB
public long addUser(User user) {
long newId = 0;
ContentValues contentValues = new ContentValues();
contentValues.put(USER_COL_ID, user.getId());
contentValues.put(USER_COL_NAME, user.getUserName());
contentValues.put(USER_COL_AGE, user.getAge());
if (mWritableDB != null) {
try {
newId = mWritableDB.insert(USER_TABLE_NAME, null, contentValues);
} catch (SQLException e) {
e.printStackTrace();
}
}
return newId;
}
Serach查询,如
// To search user in LocalDB
public User serach(Integer id) {
User user = new User();
Cursor cursor = null;
try {
if (mReadableDB == null) {
mReadableDB = getReadableDatabase();
}
cursor = mReadableDB.rawQuery("SELECT * FROM " + USER_TABLE_NAME + " WHERE " + USER_COL_ID + "=" + id, null);
cursor.moveToFirst();
user.setId(cursor.getInt(cursor.getColumnIndex(USER_COL_ID)));
user.setUserName(cursor.getString(cursor.getColumnIndex(USER_COL_NAME)));
int table_age = cursor.getColumnIndex(USER_COL_AGE);
if (table_age == -1) {
user.setAge(-99);
} else {
user.setAge(cursor.getInt(cursor.getColumnIndex(USER_COL_AGE)));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
return user;
}
}