我注意到 openOrCreateDatabase 仅适用于模拟器而不适用于手机,当我右键单击项目并“作为 Android 应用程序运行”时。我检查了 DDMS,数据库是通过模拟器成功创建的,但不是实际的设备。在手机上测试时,我根本没有收到任何错误消息。是的,我确实知道数据库助手类,我也尝试过,再次没有错误消息。所以我想知道,是否存在权限问题?需要设置某种配置以便在手机上进行测试时创建 SQLite 数据库?任何帮助表示赞赏。谢谢。
PS 我正在关注本教程:http ://www.youtube.com/watch?v=OUoGnvz_Yw4
编辑添加代码:在这里......在模拟器中工作正常,设备上没有任何反应。任何帮助表示赞赏。再次感谢。
package com.solitario.dbtest1;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = this.openOrCreateDatabase("dbtest1.db",MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS FunnyNames (email VARCHAR, firstName VARCHAR, lastName VARCHAR);");
db.close();
}
}
针对 Rob 的问题进行编辑:密切关注我的 LogCat 我看到以下两行:
08-07 21:44:33.439: D/Database(2936): dbopen(): path = /data/data/com.solitario.dbtest1/databases/dbtest1.db, flag = 6
08-07 21:44:33.439: D/Database(2936): dbopen(): path = /data/data/com.solitario.dbtest1/databases/dbtest1.db, free size = 888
我试图通过在我的终端中输入这个来提取数据库,并得到“权限被拒绝”。
solitario@ubuntu:~/sdk/platform-tools$ sudo ./adb pull /data/data/com.solitario.dbtest1/databases/dbtest1.db
failed to copy '/data/data/com.solitario.dbtest1/databases/dbtest1.db' to './dbtest1.db': Permission denied
因此,如果我尝试拉取一个不存在的文件,则计算终端会给我一个不同的响应,我进入我的 droid 设置,清除了应用程序的数据但没有卸载应用程序。然后再次尝试从终端拉数据库,并得到一个“不存在”。
solitario@ubuntu:~/sdk/platform-tools$ sudo ./adb pull /data/data/com.solitario.dbtest1/databases/dbtest1.db
remote object '/data/data/com.solitario.dbtest1/databases/dbtest1.db' does not exist
所以看起来它确实创建了数据库,但是 DDMS 不会向您显示数据库何时创建,终端也不会允许您拉取它以查看它。
所以,我想修改我的问题......在构建一个 android 应用程序并在实际设备上进行测试时,如何验证您的命令是否成功?有什么工具可以验证我的查询是否已在机器人上执行?
再次感谢您的阅读和您的回复!