我用这个解决了我的问题,如果你正在为模拟器工作然后使用命令提示符复制你的数据库,我已经在资产文件夹中添加了 myDB.sqlite 然后运行
adb push myDB.sqlite /data/data/com.my_app.my_app/databases/myDB.sqlite
对于设备,只需将它们放入应用程序包中,即 Android 的资产文件夹。你需要 myDB.sqlite 和 file__0/0000000000000001.sqlite 文件。 More....
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.init();
try
{
String pName = this.getClass().getPackage().getName();
this.copy("myDB.sqlite","/data/data/"+pName+"/databases/");
this.copy("0000000000000001.sqlite","/data/data/"+pName+"/app_database/file__0/");
}
catch (IOException e)
{
e.printStackTrace();
}
super.loadUrl(Config.getStartUrl());
}
void copy(String file, String folder) throws IOException
{
File CheckDirectory;
CheckDirectory = new File(folder);
if (!CheckDirectory.exists())
{
CheckDirectory.mkdir();
}
InputStream in = getApplicationContext().getAssets().open(file);
OutputStream out = new FileOutputStream(folder+file);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len; while ((len = in.read(buf)) > 0) out.write(buf, 0, len);
in.close(); out.close();
}
对于 iOS,您可以使用以下步骤:
第 1 步: 从 sqlite 数据库中删除 .sqlite 扩展名。前任。如果我们有一个名为 myDB.sqlite 的数据库,则只使用 myDB。
第 2 步: 然后将 myDB 文件拖到 Xcode 中的资源目录,方法是选择“为任何添加的文件夹创建组”选项并选中“将项目复制到目标中”组的文件夹(如果需要)”选项,同时添加参考。
第 3 步:现在使用以下代码将数据库复制到我们应用程序内的 Document 目录中。
-(void) copyDatabase{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSString *dbPath = [self getDBPath];
BOOL success = [fileManager fileExistsAtPath:dbPath];
if(!success) {
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myDB"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
if (!success)
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
- (NSString *) getDBPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"myDB"];
}
第 4 步: 使用此代码 [self copyDatabase]; 并在 didFinishLaunchingWithOptions(AppDelegate.m ) 方法中调用它,如下所示
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
[self copyDatabase];
}
现在使用以下代码打开数据库。
function openDatabase() {
try{
if(!!window.openDatabase){
var openDB = window.sqlitePlugin.openDatabase({name : "myDB"});
}else{
navigator.notification.alert("Local database is not supported by your device.");
}
}
catch(error){
console.log("ERROR:" + error.message);
}
More detail...