如何使用我自己的sqlite数据库?

如何使用我自己的sqlite数据库?,第1张

概述我把我的数据库字段放在“assets”文件夹中.并使用此 blog中的代码将数据库复制到“/ data / data / my_packname / databases /”,(此复制代码我在运行此应用程序时在onCreate()方法中运行它)然后使用select * from ..获取数据但它给了我一个例外:没有这样的表. 有人告诉我,如果我试图在SQLiteOpenHelper的onCreat 我把我的数据库字段放在“assets”文件夹中.并使用此 blog中的代码将数据库复制到“/ data / data / my_packname / databases /”,(此复制代码我在运行此应用程序时在onCreate()方法中运行它)然后使用select * from ..获取数据但它给了我一个例外:没有这样的表.

有人告诉我,如果我试图在sqliteOpenHelper的onCreate()中复制文件,那就太晚了.因此复制文件代码无法复制完整的文件.

所以我需要先使用adb或ddms拉数据库吗?

那么,任何人都可以教我如何使用我自己的数据库?
你能告诉我这个设置吗?

我已经使用了该博客文章中的说明,并在正确的轨道上发现它们通过不必要地扩展sqliteOpenHelper来严重地使问题复杂化.我做了以下更好的运气:

>创建一个实用程序类,通过将静态数据库从资产复制到正确的目录中来创建静态数据库,但不会因为sqliteOpenHelper格式而陷入困境.
>使用相同的实用程序类通过使用sqliteDatabase.openDatabase()打开数据库

编辑:这是我创建的这个实用程序类的一个版本;它不是很完整,但你会得到漂移.

public class dbutils {    private static final String DB_PATH = "/data/data/com.mypackage.myapp/databases/";    private static final String DB_name = "my.db";    public static voID createDatabaseIfNotExists(Context context) throws IOException {        boolean createDb = false;        file dbDir = new file(DB_PATH);        file dbfile = new file(DB_PATH + DB_name);        if (!dbDir.exists()) {            dbDir.mkdir();            createDb = true;        }        else if (!dbfile.exists()) {            createDb = true;        }        else {            // Check that we have the latest version of the db            boolean doUpgrade = false;            // Insert your own logic here on whether to upgrade the db; I personally            // just store the db version # in a text file,but you can do whatever            // you want.  I've trIEd MD5 hashing the db before,but that takes a while.            // If we are doing an upgrade,basically we just delete the db then            // flip the switch to create a new one            if (doUpgrade) {                dbfile.delete();                createDb = true;            }        }        if (createDb) {            // Open your local db as the input stream            inputStream myinput = context.getAssets().open(DB_name);            // Open the empty db as the output stream            OutputStream myOutput = new fileOutputStream(dbfile);            // transfer bytes from the inputfile to the outputfile            byte[] buffer = new byte[1024];            int length;            while ((length = myinput.read(buffer)) > 0) {                myOutput.write(buffer,length);            }            // Close the streams            myOutput.flush();            myOutput.close();            myinput.close();        }    }    public static sqliteDatabase getStaticDb() {        return sqliteDatabase.openDatabase(DB_PATH + DB_name,null,sqliteDatabase.OPEN_Readonly);    }}
总结

以上是内存溢出为你收集整理的如何使用我自己的sqlite数据库?全部内容,希望文章能够帮你解决如何使用我自己的sqlite数据库?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存