Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将数据从SQLite选择到ListArray中_Android_Sqlite - Fatal编程技术网

Android 将数据从SQLite选择到ListArray中

Android 将数据从SQLite选择到ListArray中,android,sqlite,Android,Sqlite,我已经为此绞尽脑汁好几天了,我就是不能在Android/Java中使用SQLite数据库。我试图从SQLite数据库中选择两行到一个或两个ListArray中,每行一行。我不知道这是好是坏,我只是不知道怎么做。我已经尝试了我发现的各种数据库管理器类,但它们都不能满足我的需要,而且似乎我应该能够完成这个简单的任务,而不需要我在其他数据库管理器中看到的额外功能。有没有简单的方法可以从现有的SQLite数据库中查询一些数据并将其放入ListArray中,这样我就可以使用它了?我意识到我需要将数据库从资

我已经为此绞尽脑汁好几天了,我就是不能在Android/Java中使用SQLite数据库。我试图从SQLite数据库中选择两行到一个或两个ListArray中,每行一行。我不知道这是好是坏,我只是不知道怎么做。我已经尝试了我发现的各种数据库管理器类,但它们都不能满足我的需要,而且似乎我应该能够完成这个简单的任务,而不需要我在其他数据库管理器中看到的额外功能。有没有简单的方法可以从现有的SQLite数据库中查询一些数据并将其放入ListArray中,这样我就可以使用它了?我意识到我需要将数据库从资产复制到Android数据库路径中,我可以处理这一部分。我还需要能够修改每行的一列。我不需要创建数据库、表或行。我恳求有人帮我解决这个问题,因为我认为我从互联网上抄袭的任何代码都是毫无用处的。

你可以创建一个这样的方法:

private List<MyItem> getAllItems()
    List<MyItem> itemsList = new ArrayList<MyItem>();
    Cursor cursor = null;
    try {
        //get all rows
        cursor = mDatabase.query(MY_TABLE, null, null, null, null,
                null, null);
        if (cursor.moveToFirst()) {
            do {
                MyItem c = new MyItem();
                c.setId(cursor.getInt(ID_COLUMN));
                c.setName(cursor.getString(NAME_COLUMN));
                itemsList.add(c);
            } while (cursor.moveToNext());
        }
    } catch (SQLiteException e) {
        e.printStackTrace();
    } finally {
        cursor.close();
    }
    return itemsList;
}

用于打开和关闭数据库。

您正试图访问哪些数据/信息?是您自己输入到数据库中的信息,还是您试图从Android数据库中访问信息,如联系人或通话记录?如果您试图访问Android数据库,通常建议您使用ContentProvider。这提供了一个抽象层,允许Android处理数据库事务。这是我自己提供的一个数据库。你能提供一些你使用过的源代码,以便我们可以帮助调试吗?我没有任何我觉得舒服的代码。我找不到任何只是选择一些数据并使用它的例子。我想大多数发布代码的人都认为人们熟悉如何使用代码,但我就是不理解。我来自PHP和C,这两种语言都有访问数据库的非常简单的方法。Java似乎没有。没有简单的方法可以查询数据库并将select中的数据放入ListArray中吗?您可以使用myDB.rawQuery并返回游标。然后,您可以使用cursor.getStringYOUR_COLUMN_NAME并将其添加到数组中。我通常使用的另一个选项是将这些值存储在hashmap中,将_ID存储为值,并将我的可搜索项存储在键中,这样我就可以通过一个查询轻松找到所需的所有内容,您的数据库助手类根本帮不上我的忙,而不是让多个数据库事务发生,从而导致速度极度缓慢。它假设当我从资产导入现有数据库时,它正在运行时创建数据库,但我认为我可以解决这个问题。关于这段代码,我不理解的第二件事是查询。cursor=mDatabase.queryMY_TABLE,null,null,null,null,null,null;这基本上只是从我的表中选择一个*吗?老实说,我仍在试图弄清楚如何理解文档。我放弃了。那里的列表代码不起作用,我无法对文档进行头尾分析,以找出如何使其起作用。我将看看我能在xml中做些什么来实现这一点,并省去sqlite所需的特性。我将在以后尝试解决这个问题,并将其作为更新添加到应用程序中。@Ovidiu Latcu MyItem从何而来?
private static class DatabaseHelper extends SQLiteOpenHelper{

    private final static String DATABASE_CREATE="create table " + MY_TABLE + " (id integer primary key, country string);";

    public DatabaseHelper(Context context,String name, CursorFactory factory, int version){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
                          int newVersion){
        Log.w(TAG, "Upgrading database from version " + oldVersion 
              + " to "
              + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS "+ MY_TABLE);
        onCreate(db);
    }
}