如何在android编程中用三列创建sqlite数据库?

时间:2017-03-27 04:21:17

标签: android android-sqlite

在我的android程序中,我想创建sq-lite数据库,其中应该有三列,所以对于每个第一列,第三列应该有最多四个条目,那么我应该如何创建呢?并且我想要使用像insert,update,get all,delete这样的方法,并且应该有一个可以将第一列作为参考并从第三列操作条目。所以请建议我如何实现这一点。

1 个答案:

答案 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;
    }
}