从外部自己的SQLite数据库中获取数据

时间:2011-06-08 19:25:14

标签: android database sqlite null cursor

我有自己的数据库,其中包含http://i55.tinypic.com/6i8861.jpg(SQLiteBrowser) 我有这个代码,它将资源从资源资源文件夹复制到系统data/data/package/files目录http://pastebin.com/XeNGmrcD,这就是它在onCreate()http://pastebin.com/TigXFStF中的实现方式,这就是图像test.sqlite放在模拟器系统目录中的位置以及我在执行下面的查询时得到的错误:http://i51.tinypic.com/2mxrk0p.jpg

cursor = dbObj.getReadableDatabase().query(TABLE_NAME, null, null, null, null, null, null);

我得到的游标是null,因为找不到表。如果我在SQLite浏览器中执行与上述(SELECT * FROM gradovi)相同的查询。我得到了结果,在这里我没有。 请告诉我如何从数据库中获取数据?我做错了什么?另外我想知道如何遍历记录?

3 个答案:

答案 0 :(得分:2)

看起来数据库文件复制失败。您的代码有许多被吞没的异常,因此您可能看不到发生的错误。

请注意,尝试使用预先构建的SQLite数据库文件发布应用程序会带来陷阱,包括不同的路径和不同的SQLite版本。

答案 1 :(得分:1)

((Button)findViewById(R.id.button01)).setOnClickListener(
new View.OnClickListener(){

    @Override
    public void onClick(View v) {
        DatabaseHelper myDbHelper = new DatabaseHelper(CopyDbActivity.this);
        try{
            myDbHelper.createDataBase();
        }catch (IOException ioe) {
            throw new Error("Unable to create database");
        }

        try {                
            myDbHelper.openDataBase();
        }catch(SQLException sqle){
            throw sqle;
        }

        Toast.makeText(CopyDbActivity.this, "Success", Toast.LENGTH_SHORT).show();

        c=myDbHelper.query("EMP_TABLE", null, null, null, null,null, null);
        if(c.moveToFirst()){
            do {
                Toast.makeText(CopyDbActivity.this,
                "_id: " + c.getString(0) + "\n" +
                "E_NAME: " + c.getString(1) + "\n" +
                "E_AGE: " + c.getString(2) + "\n" +
                "E_DEPT:  " + c.getString(3),
                Toast.LENGTH_LONG).show();
            } while (c.moveToNext());
        }
    }
});



}

答案 2 :(得分:0)

我的理解是目的地应该是“/ data / data / PackageName / databases / mydatabase”。

您也可以从http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

获得一些帮助