【问题标题】:Android SQL database Load data from specific tableAndroid SQL 数据库从特定表中加载数据
【发布时间】:2016-04-14 12:30:24
【问题描述】:

我在应用程序启动时创建一个表并从 EditText 字符串名称添加更多表。

我的第一个数据库表

public static final String CREATE_ERAMPE_TABLE = "create table details" +
        "(id integer primary key, username text, metre text, northing double," +
        "eastings double,identification text, phone text, date text)";

根据活动创建其他表格

SQLiteDatabase db = dbHelper.getWritableDatabase();
    newTableName = dbTableName.getText().toString();
    String sql = "create table "+ newTableName+
            "(id integer primary key, username text, metre text, northing text," +
            "eastings text,identification text, phone text, date text)";
    Log.i("CreateDb=", sql);

当插入数据到特定的时候

  String insertTo = metreUsers.getTableName();

    return database.insert(insertTo, null, cvs);

将所有表名的列表放入列表视图中,我使用以下代码

 public ArrayList<RegisteredGroups> getRegisteredGroups(){
    ArrayList<RegisteredGroups> arrTblnames = new ArrayList<RegisteredGroups>();
   // database = dbHelper.getWritableDatabase();
    Cursor c = database.rawQuery("SELECT name FROM sqlite_master WHERE type='table' AND name != 'android_metadata' AND name != 'sqlite_sequence'", null);

    while (c.moveToNext()){
        RegisteredGroups grp = new RegisteredGroups();
        grp.setGroupName(c.getString(c.getColumnIndex("name")));
        arrTblnames.add(grp);
        //get count of entries in every single table
        String countQuery = "SELECT * FROM "+c.getString(c.getColumnIndex("name"));
        Cursor cursor = database.rawQuery(countQuery, null);
        int cnt = cursor.getCount();
        grp.setGroupNumber(String.valueOf(cnt));
    }

现在,当我单击包含数据库表名的列表视图上的第一项时,我想从该特定表中将数据加载到列表视图中。

传递正在使用的表名

rgGroup = (RegisteredGroups)parent.getItemAtPosition(position);
    if (rgGroup != null){
        Bundle arguments = new Bundle();
        FragmentManager frag = getFragmentManager();
        FragmentTransaction trans = frag.beginTransaction();
        arguments.putParcelable("selectedGroup", rgGroup);
        RegisteredUsersList regs = new RegisteredUsersList();
        regs.setArguments(arguments);

【问题讨论】:

  • 你的意思是你必须从选定的表名中获取数据,对吧??
  • FSM 拯救我们!你为什么要为新用户创建新表?而是在details 表中创建两个表usersdetails 将外键添加到表users ...
  • 是的..我想从选定的表中获取数据并将其显示在列表视图中;
  • 它很简单,只需从选定的列表视图项中传递表名并从数据库中获取所有数据。
  • 这样吧..我有5个组..每个组有50-100个用户。每个人都对其成员的一切负责。定价,阅读差异等

标签: android sqlite listview


【解决方案1】:
public ArrayList<String> loadArtist(){

    ArrayList<String> list= new ArrayList<>();
    SQLiteDatabase database=getReadableDatabase();

    Cursor cursor =  database.query(
        ArtistMaster.ArtistDetails.TABLE_NAME,
        new String[] {ArtistMaster.ArtistDetails.COLUMN_ARTIST_NAME},
        null,
        null,
        null,
        null,
        null
    );

  while(cursor.moveToNext()) {
      list.add(cursor.getString(
         cursor.getColumnIndexOrThrow(
             ArtistMaster.ArtistDetails.COLUMN_ARTIST_NAME)));
  }

  return list;

}

【讨论】:

  • 您能否为您的答案添加解释:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多