我正在开发phonegap 1.3.0。我在 phonegap 中创建了名为 test.db 的数据库,该数据库存储在 data/data/(pakage name)/test.db 中。我正在使用本机 android 代码将数据库复制到 sdcard (mnt/sdcard)。但它给出了 test.db 不存在的错误。设备未植根。我错过了什么?
提前致谢。
代码如下->
public void copyfile(String srFile, String dtFile) throws FileNotFoundException{
String DBPATH = "/data/data/package_name/databases/";
String DBNAME = "test.db";
String myPath = DBPATH + DBNAME;
//Open your local db as the input stream
File externalStorage = Environment.getExternalStorageDirectory();
InputStream myInput = new FileInputStream(myPath);
// Path to the just created empty db
String outFileName = "/mnt/sdcard/folder/test.db";
//Open the empty db as the output stream
OutputStream myOutput;
try {
myOutput = new FileOutputStream(outFileName);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
phonegap 代码如下:
<!DOCTYPE html>
<script type="text/javascript" charset="utf-8" src="phonegap-1.3.0.js"></script>
<script type="text/javascript" charset="utf-8">
db = window.openDatabase("test", "1.0", "PhoneGap Demo", 200000);
function createDB() {
db.transaction(populateDB);
}
function populateDB(tx) {
Field17=document.form.Field17.value;
Field18=document.form.Field18.value;
Field19=document.form.Field19.value;
//tx.executeSql('DROP TABLE IF EXISTS INFO');
tx.executeSql('CREATE TABLE IF NOT EXISTS INFO (pid integer primary key, field17,field18,field19');
sql = "INSERT INTO INFO (field17,field18,field19) VALUES ( '" + Field17 + "','" + Field18 + "','" + Field19 + "')";
tx.executeSql(sql);
db.transaction(queryDB);
}
function queryDB(tx,results) {
console.log("inside querydb");
tx.executeSql('SELECT * FROM INFO', [], querySuccess);
}
function querySuccess(tx, results) {
var len = results.rows.length;
alert('rows inserted: ' + len);
if (len > 0) {
for (var i=0;i<len;i++) {
console.log('pid: ' + results.rows.item(i).pid + 'field: ' + results.rows.item(i).field17 + ' field: ' + results.rows.item(i).field18+ ' field ' + results.rows.item(i).field19);
}
}
}
</script>