Android Sqlite concat两列

时间:2013-08-06 15:46:07

标签: android sqlite

到目前为止,我已经进行了连接,但在结果中显示了

UncleSam.

我想要做的是在两列之间放置一个空格,结果是

Uncle Sam.

这是我正在处理的代码:

   public Cursor getAllPatients()
{
    Cursor localCursor = //  
            this.myDataBase.query(DB_TABLE, new String[] { 
                    KEY_ID, KEY_FNAME + "||" + KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, null, null, null, null, null);
    if (localCursor != null)
      localCursor.moveToFirst();
    return localCursor;
}
来自DBHelper.java的

 Cursor cursor = dbHelper.getAllPatients();
    String[] data = new String[]{
            DBHelper.KEY_FNAME + "||" + DBHelper.KEY_LNAME, DBHelper.KEY_DIAGNOSIS, DBHelper.KEY_LASTFFUP};
    // 
    int[] to = new int[] {R.id.fullname, R.id.diagnosis, R.id.lastffup};

    dataAdapter = new SimpleCursorAdapter(this, R.layout.custom_row, cursor, data, to, 0);

来自我的MainActivity。

任何帮助都可以。感谢。

3 个答案:

答案 0 :(得分:3)

你可以像这样结束:

Cursor localCursor = this.myDataBase.rawQuery("SELECT (KEY_FNAME  || ' ' || KEY_LNAME) AS fullname, KEY_ID, KEY_DIAGNOSIS, KEY_LASTFFUP FROM DB_TABLE");

您的标题全名将位于光标栏'全名'。

在主要活动中:

String[] data = new String[]{ "fullname", DBHelper.KEY_DIAGNOSIS, DBHelper.KEY_LASTFFUP};

(你应该为" fullname"分配一个DBHelper常量。)

答案 1 :(得分:0)

  

Android Sqlite concat两列

在与这个帖子的作者进行了一点谈话后,我建议你不要连接列(你真的不需要它)和从Cursor检索的concat字符串。您的陈述将更具人性化,解决方案更清晰。

<强>解释

通常,使用表示表的对象在应用程序层上表示表是非常有用和有效的方法。例如,如果您有表User,那么创建新类User和表中的列将等于此类中的属性。这种方式我觉得非常优雅(如果其他人会看到你的代码,他不会感到困惑和害怕)

最后,当你将它们添加到ListAdapter

时,你可以简单地连接fname和lname

所以我更喜欢这种方式:

List<User> users = new ArrayList<User>();
User u = null;
String query = "select * from Table";
Cursor c = db.rawQuery(query, null);
if (c != null && c.moveToFirst()) {
   do { 
      u = new User();
      u.setFirstName(c.getString(c.getColumnIndex("fname")));
      u.setLastName(c.getString(c.getColumnIndex("lname")));
      ...
      users.add(u);
   } while (c.moveToNext());
}

然后在ListAdapter的某个地方,您可以这样做:

textView.setText(u.getFirstname() + " " + u.getLastName());

希望它有所帮助。

答案 2 :(得分:0)

我终于明白了。

 public Cursor getAllPatients()
 {
Cursor localCursor = //  
        this.myDataBase.query(DB_TABLE, new String[] { 
                KEY_ID, KEY_FNAME + "|| ' ' ||" + KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, null, null, null, null, null);
if (localCursor != null)
  localCursor.moveToFirst();
return localCursor;
}

Cursor cursor = dbHelper.getAllPatients();
String[] data = new String[]{
        DBHelper.KEY_FNAME + "|| ' ' ||" + DBHelper.KEY_LNAME, DBHelper.KEY_DIAGNOSIS, DBHelper.KEY_LASTFFUP};
// 
int[] to = new int[] {R.id.fullname, R.id.diagnosis, R.id.lastffup};

dataAdapter = new SimpleCursorAdapter(this, R.layout.custom_row, cursor, data, to, 0);