gpt4 book ai didi

Android SQLiteOpenHelper 无法打开数据库文件

转载 作者:IT老高 更新时间:2023-10-28 23:33:27 28 4
gpt4 key购买 nike

我知道之前讨论过这个主题。但是我找不到解决问题的方法,所以我要再问一次。我在创建数据库时遇到问题。我已经复制了 SQLiteOpenHelper 的实现:

public class DBCreator extends SQLiteOpenHelper 
{
private static final String DATABASE_NAME = "servision.db";
private static final int DATABASE_VERSION = 1;


private static final String INFO_TABLE ="create table INFO(key text,value text);";
public static final String GATEWAYS_TABLE = "GATEWAYS";

// Table name
public static final String TABLE = "events";

// Columns
public static final String TIME = "time";
public static final String TITLE = "title";

public DBCreator(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db)
{
try
{
String gatewaytablescript ="create table" +GATEWAYS_TABLE+"(" +
"id int primary key, " +
"host text not null," +
"port int not null," +
"username text," +
"password text,"+
"useproxy int," +
"proxyHost text," +
"proxyPort port," +
"desc text," +
"secondaryip text," +
"secondaryport int," +
"timezone int," +
"encryption int," +
"customkey text" +
");";

Log.d("DBCreator", "Creating " + GATEWAYS_TABLE + "table");
db.execSQL(gatewaytablescript);

String infotablescript ="create table " + INFO_TABLE + "(key text,value text);";
Log.d("DBCreator", "Creating " + INFO_TABLE + "table");
db.execSQL(infotablescript);

}
catch(SQLException ex)
{
Log.d("DBCreator", "onCreate exception " +ex.getMessage());
}
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.d("EventsData", "onUpgrade");
if (oldVersion >= newVersion)
return;


}
}

我从主要 Activity onCreate 方法创建它。

DBCreator db =new DBCreator(this);
db.getReadableDatabase();

在 logcat 中我收到以下信息:

06-01 17:31:15.523: INFO/global(2470): Default buffer size used in BufferedInputStream constructor. It would be better to be explicit if an 8k buffer is required.
06-01 17:31:15.652: INFO/Database(4160): sqlite returned: error code = 14, msg = cannot open file at source line 25467
06-01 17:31:15.652: ERROR/Database(4160): sqlite3_open_v2("/data/data/com.servision.svclient/databases/servision.db", &handle, 6, NULL) failed
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): Couldn't open servision.db for writing (will try read-only):
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): android.database.sqlite.SQLiteException: unable to open database file
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1921)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:883)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:960)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:953)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:602)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at com.servision.svclient.Main.onCreate(Main.java:52)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.os.Handler.dispatchMessage(Handler.java:99)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.os.Looper.loop(Looper.java:123)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at java.lang.reflect.Method.invokeNative(Native Method)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at java.lang.reflect.Method.invoke(Method.java:521)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
06-01 17:31:15.722: ERROR/SQLiteOpenHelper(4160): at dalvik.system.NativeStart.main(Native Method)
06-01 17:31:15.738: INFO/Database(4160): sqlite returned: error code = 14, msg = cannot open file at source line 25467
06-01 17:31:15.738: ERROR/Database(4160): sqlite3_open_v2("/data/data/com.servision.svclient/databases/servision.db", &handle, 1, NULL) failed

永远不会调用 DBCreator 的 onCreate。我在 Eclipse 的 Debug模式下在 Galaxy S 上运行程序。我是否缺少一些权限?可能是上下文不好还是什么?

最佳答案

关于返回的 sqlite:错误代码 = 14, msg = cannot open file at source line 25467sqlite3_open_v2("/data/data/com.servision.svclient/databases/servision.db", &handle, 1, NULL) failed 错误,这似乎是没有数据库并且Android试图创建一个时引起的。

这里有一些阅读

http://androidblogger.blogspot.com/2011/02/instable-android-and-unable-to-open.html

http://www.itsalif.info/content/check-if-database-exist-android-sqlite3openv2-failed

http://code.google.com/p/android/issues/detail?id=949

关于Android SQLiteOpenHelper 无法打开数据库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6202926/

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