Android SQLite获取user_id

时间:2015-03-28 19:41:45

标签: android sqlite

如何从sqlite数据库中获取user_id?

我有一个像这样创建的用户表(只有一个简单):

private static final String CREATE_TABLE_USER =
    "CREATE TABLE " + TABLE_USER +
                "("+
                COLUMN_USER_ID + " integer primary key autoincrement," +
                COLUMN_USER + " TEXT NOT NULL, " +
                COLUMN_PASSWORD + " TEXT NOT NULL" +
                ");";

我希望在整个应用程序中获取用户的信息(使用共享首选项)。

在我的登录页面中,我只有2个textField:用户名密码。我可以将这些值保存为变量,并将它们放在我的createSession(String name,String email,Long userId)方法中。但是,由于我没有user_id文本字段,我无法获取createSession()方法所需的user_id ..

public void createSession(String name, String email, Long userId){

        // Storing name in pref
        editor.putString(KEY_NAME, name);

        // Storing password in pref
        editor.putString(KEY_PASSWORD, email);

        //Storing user id in pref
        editor.putLong(KEY_ID, userId);

        // commit changes
        editor.commit();
    }

我尝试进行查询以接收ID,并将其返回到登录页面(将放在createSession()方法中)

public Long getUserId(String username, String password) throws SQLException
{
    Cursor mCursor = database.rawQuery("SELECT user_id FROM user WHERE username=? AND password=?", new String[]{username,password});
    if (mCursor != null) {
        if(mCursor.getCount() > 0)
        {
           Long userId = mCursor.getLong(1);
        }
    }
    return null;
}

但它不会为我取得userId ..有人建议为什么会这样?

1 个答案:

答案 0 :(得分:0)

您忘了将光标移动到第一条记录。现在它指向记录 -1

所以改变这个

if (mCursor != null) {

到这个

if (mCursor != null && mCursor.moveToFirst()) {

而且......列 1 不存在。

更改

Long userId = mCursor.getLong(1);

Long userId = mCursor.getLong(0);