gpt4 book ai didi

android - SQLite 表不存在现有 SQLite 数据库(和表)的异常

转载 作者:行者123 更新时间:2023-11-29 18:21:56 25 4
gpt4 key购买 nike

我已按照 here 给出的说明进行操作将现有的 SQLite 数据库引入您的 Android 应用程序。

当我查询表“android_metadata”时,这没问题。但是,当我对我自己的表“words”(主整数键有 _id)运行类似的查询时,我得到一个表不存在的异常并且应用程序崩溃。

这是为什么?

代码:

Cursor c = myDatabase.query("android_metadata", null, null, null, null, null, null, null);

有效但是

Cursor c = myDatabase.query("words", null, null, null, null, null, null, null);

返回一个表不存在的异常。

这就是我创建数据库的方式(对路径和文件名的引用是正确的):

private void copyDatabase() throws IOException
{
//Open local db as the input stream
InputStream myInput = mContext.getAssets().open(DB_NAME);

//Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;

//Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);

//Transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length = 0;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}

//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}

(注意:在我看来,表格就在那里。我正在我的 SQLite 浏览器中查看它。)

最佳答案

你在跟踪一条红鲱鱼。无论如何,android_metadata 表都会在每个 android 数据库中创建。

确定问题的真正机制是简单地在模拟器中运行您的应用程序并检查数据库。如果您的模拟器正在运行并且应用程序已设置数据库,请运行:

adb shell
cd /data/data/your.application.package/databases
ls

如果 ls 显示您期望的数据库名称,运行:

sqlite3 <your db file>

在 sqlite3 提示符下运行:.schema

这将打印出数据库的表。我的猜测是你只会找到元数据表,因为 android 实际上并没有从你的外部位置读取你的数据库。如果是这样,请回复评论,我会尽力帮助您完成该过程。

关于android - SQLite 表不存在现有 SQLite 数据库(和表)的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4917671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com