08-18 05:18:17.501: E/Database(4661): sqlite3_open_v2("data/data/edu/huang/database/myDatabase", &handle, 6, NULL) failed
本人写了个小小的Android数据库的测试程序,使用的是Android中自带的数据库SQLite,但是不知道为什么,当创建数据库的时候老是在LogCat中挑出上面一句错误提示,大家有没有遇到过这样的错误提示,请求指点。
本人写了个小小的Android数据库的测试程序,使用的是Android中自带的数据库SQLite,但是不知道为什么,当创建数据库的时候老是在LogCat中挑出上面一句错误提示,大家有没有遇到过这样的错误提示,请求指点。
解决方案 »
- 真机器机器上测试得不到经纬度
- 关于在service中实例化socket问题
- 定时器和开机通知都没有效果,在线求助
- android 前置 预览正常,拍照左右翻转 180度
- 求Android手机号码吉凶查询、归属地查询源码
- Android 访问远程数据库问题。
- 应用程序运行出错,求解
- 求助Unable to start activity ComponentInfo{mars.mobile/mars.mobile.DetailActivity}
- 代码混淆后 运行apk有误
- android怎么实现KTV伴唱原唱效果
- 关于解锁屏幕后引发的问题
- 在listview中动态改变ProgressBar的进度,求大侠解答!
发代码看看~~
public void createOrOpenDatabase(){
try {
slDatabase = SQLiteDatabase.openDatabase("data/data/edu/huang/database/myDatabase", null, SQLiteDatabase.OPEN_READWRITE|SQLiteDatabase.CREATE_IF_NECESSARY);
appendMessage("数据库已经成功打开!");
String sql = "create table if not exists student (sno char(5),sname varchar(20), sage int, sclass char(5))";
slDatabase.execSQL(sql);
appendMessage("表student已经成功创建!");
} catch (Exception e) {
Toast.makeText(DatabaseActivity.this, "数据库创建失败!", Toast.LENGTH_LONG).show();
}
}
public void closeDatabase(){
try {
slDatabase.close();
appendMessage("数据库成功关闭!");
} catch (Exception e) {
Toast.makeText(this, "数据库关闭失败:"+e.toString(), Toast.LENGTH_LONG).show();
}
}
{
createOrOpenDatabase()
.....
}public boolean databaseExist()
{
File dbFile = new File("data/data/edu/huang/database/myDatabase");
return dbFile.exists();
}
路径貌似应该是
databases.复数
应该是(!databaseExist())吧,我试了,但是还是不行。我是将建立数据库的让一个Button进行监听,但是每次我运行完程序查看File Explorer还没有点击Button的点击事件时都能够找到一个具有一定大小的数据文件,我将它导出后用Navicat 查看里面也没有什么内容。另外我使用输出进行查看点击建立数据库的按钮根本就没有运行建立数据库的代码,甚是郁闷啊
android利用SQLiteDatabase建立的数据库,数据库文件具体保存路径是:“data/data/应用程序完整包名/databases/数据库名”,手机获得root权限后,可以利用re文件管理器看到这个路径的。另求助:http://topic.csdn.net/u/20120820/10/834f6596-412b-4d68-a15f-4f5586a03c8d.html?43639
",null);
08-20 09:49:28.737: I/ActivityThread(475): Publishing provider edu.huang.database.provider.student: edu.huang.database.MyContentProvider
08-20 09:49:28.817: E/Database(475): sqlite3_open_v2("/data/data/edu.huang.database/databases/myDatabase.db", &handle, 6, NULL) failed
08-20 09:49:28.817: D/AndroidRuntime(475): Shutting down VM
08-20 09:49:28.839: W/dalvikvm(475): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
08-20 09:49:28.848: E/AndroidRuntime(475): Uncaught handler: thread main exiting due to uncaught exception
08-20 09:49:28.868: E/AndroidRuntime(475): java.lang.RuntimeException: Unable to get provider edu.huang.database.MyContentProvider: android.database.sqlite.SQLiteException: unable to open database file
08-20 09:49:28.868: E/AndroidRuntime(475): at android.app.ActivityThread.installProvider(ActivityThread.java:4112)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.app.ActivityThread.installContentProviders(ActivityThread.java:3908)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3867)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.app.ActivityThread.access$2800(ActivityThread.java:116)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.os.Handler.dispatchMessage(Handler.java:99)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.os.Looper.loop(Looper.java:123)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.app.ActivityThread.main(ActivityThread.java:4203)
08-20 09:49:28.868: E/AndroidRuntime(475): at java.lang.reflect.Method.invokeNative(Native Method)
08-20 09:49:28.868: E/AndroidRuntime(475): at java.lang.reflect.Method.invoke(Method.java:521)
08-20 09:49:28.868: E/AndroidRuntime(475): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
08-20 09:49:28.868: E/AndroidRuntime(475): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
08-20 09:49:28.868: E/AndroidRuntime(475): at dalvik.system.NativeStart.main(Native Method)
08-20 09:49:28.868: E/AndroidRuntime(475): Caused by: android.database.sqlite.SQLiteException: unable to open database file
08-20 09:49:28.868: E/AndroidRuntime(475): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1584)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:638)
08-20 09:49:28.868: E/AndroidRuntime(475): at edu.huang.database.MyContentProvider.onCreate(MyContentProvider.java:67)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.content.ContentProvider.attachInfo(ContentProvider.java:697)
08-20 09:49:28.868: E/AndroidRuntime(475): at android.app.ActivityThread.installProvider(ActivityThread.java:4109)
08-20 09:49:28.868: E/AndroidRuntime(475): ... 12 more
08-20 09:49:28.878: I/dalvikvm(475): threadid=7: reacting to signal 3
出错的代码是MyContentProvider类中的代码:
public boolean onCreate() {
//数据库所在路径
//CursorFactory
//读写、若不存在则创建
sld=SQLiteDatabase.openDatabase("/data/data/edu.huang.database/databases/myDatabase.db", null,SQLiteDatabase.OPEN_READWRITE|SQLiteDatabase.CREATE_IF_NECESSARY);
return false;
}
你不会真的用(!databaseExist())吧? 文件不存在,你还有什么好调用的?
String dbPath=android.os.Environment.getExternalStorageDirectory().getPath();
String dbFile=dbPath+"/ourbook.db3";
先把路径整好,这样得到的dbpath 就是DDMS 中File Explorer --data中路径,去data里面找你数据库