gpt4 book ai didi

Assets 文件夹中的Android外部数据库

转载 作者:IT王子 更新时间:2023-10-29 06:23:49 24 4
gpt4 key购买 nike

我有一个 android 应用程序,它应该读取和扩展一个已经在 sqlite 上创建的数据库...通过将数据库放在文件的“data/data/(packagename)/database”文件夹中,它在模拟器上工作正常模拟器的探索者。现在问题出现在真实设备上。显然它没有要打开的数据库。我试图将数据库放在 Assets 文件夹中,但我无法使用 openhelper 打开它。

最佳答案

您应该将 .db 文件从 Assets 文件夹复制到内部/外部存储。您可以使用以下代码,

private static String DB_PATH = "/data/data/your package/database/";  
private static String DB_NAME ="final.db";// Database name

要创建一个数据库,

public void createDataBase() throws IOException 
{
//If database not exists copy it from the assets

boolean mDataBaseExist = checkDataBase();
if(!mDataBaseExist)
{
try
{
//Copy the database from assests
copyDataBase();
Log.e(TAG, "createDatabase database created");
}
catch (IOException mIOException)
{
throw new Error("ErrorCopyingDataBase");
}
}
}

检查数据库是否存在:/data/data/your package/database/DB Name

private boolean checkDataBase() 
{
File dbFile = new File(DB_PATH + DB_NAME);
return dbFile.exists();
}

从 Assets 中复制数据库

  private void copyDataBase() throws IOException 
{
InputStream mInput = getApplicationContext().getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream mOutput = new FileOutputStream(outFileName);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = mInput.read(mBuffer))>0)
{
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();
}

希望对您有所帮助。

关于 Assets 文件夹中的Android外部数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17142081/

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