如何从数据库中获取单行并将该行的值设置为textview

时间:2016-01-15 18:26:43

标签: android performance sqlite android-activity

Android应用开发中的新功能。我试图找到这个问题的解决方案但最后没有什么是有用的我问这个问题。

1)我正在app中制作个人资料,但我希望在textviews的帮助下只显示姓名和电子邮件。插入数据时没有错误但我不知道如何获取它并在textview上设置。这是我的数据库代码

public void User(String email,String name,SQLiteDatabase db){
    ContentValues contentValues = new ContentValues();
    contentValues.put(UserContract.NewUser.EMAIL,email);
    contentValues.put(UserContract.NewUser.NAME,name);
    db.insert(UserContract.NewUser.TABLE_NAME, null, contentValues);
    Log.e("Database Operations", "User Added...");
}

public Cursor getMyProfile() {
    SQLiteDatabase db = this.getReadableDatabase();
    String query = "SELECT * FROM "+ UserContract.NewUser.TABLE_NAME;
    Cursor cursor = db.rawQuery(query,null);
    return cursor;
}

使用“用户”数据但我在“getMyProfile”中收到错误。这是我想要将数据设置为textview的配置文件代码。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_profile);
    MyName = (TextView)findViewById(R.id.MyName);
    MyEmail = (TextView) findViewById(R.id.MyEmail);

    Cursor cursor = userHelper.getMyProfile();
    while (cursor.moveToFirst()){
        MyName.setText(cursor.getString(0));
        MyEmail.setText(cursor.getString(1));

    }

2)任何人都可以告诉我如何在数据库中保存图像,意味着我想添加个人资料图片,但我不知道如何做任何建议。

提前致谢:)

1 个答案:

答案 0 :(得分:0)

1)将您的功能修复为:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_profile);
    MyName = (TextView)findViewById(R.id.MyName);
    MyEmail = (TextView) findViewById(R.id.MyEmail);

    Cursor cursor = userHelper.getMyProfile();
    cursor.moveToFirst();
    MyName.setText(cursor.getString(0));
    MyEmail.setText(cursor.getString(1));
}

在我的一个应用程序中,我使用for循环来填充我的活动:

public void fillGrid(Cursor c){
        TableLayout tl = (TableLayout) findViewById(R.id.players_table);
        tl.removeAllViews();
        for(c.moveToFirst(); c.getPosition() < c.getCount(); c.moveToNext()){
            TableRow tr = new TableRow(this);
            TextView tv = new TextView(this);
            tv.setText(c.getString(1));
            tr.addView(tv);
            tl.addView(tr);
        }

        c.close();
    }

要选择数据,请执行以下操作:

    ...
        SQLiteDatabase db = tpdbHelper.getReadableDatabase();

        String[] projection = {
                Player.PlayerEntry._ID,
                Player.PlayerEntry.COLUMN_NAME_PLAYER_NAME
        };

        Cursor c = db.query(
                Player.PlayerEntry.TABLE_NAME,  //table name
                projection,                     //which columns
                null,                           //where clause columns
                null,                           //where clause values
                null,                           //group columns
                null,                           //filter by row groups
                null                            //order
        );

        fillGrid(c);
    ...

2)您可以将图像的字节保存到BLOB列。我觉得像iunputStream这样的东西可以工作