android sql文件怎么打开方式,Android SQLiteOpenHelper无法打开数据库文件

在尝试创建 SQLite 数据库时遇到了问题。错误日志显示无法打开 '/data/data/com.servision.svclient/databases/servision.db' 文件。已经尝试了读写模式,但都失败了,提示没有调用过 DBCreator 的 onCreate 方法。问题可能与权限、上下文或数据库文件路径有关。

我知道这个话题以前是讨论过的。

但是我无法找到我的问题的解决方案,所以我再问一次。

我有创建数据库的问题。

Ive复制执行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;

}

}

并且我创建它从主要活动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.(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中以Galaxy S的调试模式运行程序。

我是否缺少一些权限?

可能上下文不好还是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值