SQLite不能打开数据库的异常-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SQLite不能打开数据库的异常

2016-07-18 14:01:30 2080 1

在程序的中我从assets中复制了SQLite数据库,可以使用。当把程序第一次安装在仿真器中运行时,获得以下错误。
Failed to open the database. closing it.

android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file

E/SQLiteDatabase(7516): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
E/SQLiteDatabase(29308): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1013)

E/SQLiteDatabase(29308): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)

E/SQLiteDatabase(29308): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)

E/SQLiteDatabase(29308): at com.guayama.database.URLDatabaseHelper.checkDBExists(URLDatabaseHelper.java:86)

E/SQLiteDatabase(29308): at com.guayama.database.URLDatabaseHelper.createURLDB(URLDatabaseHelper.java:54)

E/SQLiteDatabase(29308): at com.guayama.database.URLDatabaseHelper.(URLDatabaseHelper.java:38)
打开数据库用的代码:
SQLiteDatabase.openDatabase(mPath, null,SQLiteDatabase.CREATE_IF_NECESSARY);
也试过以下的代码打开:
checkDB = SQLiteDatabase.openDatabase(mPath, null,

            SQLiteDatabase.OPEN_READONLY);

还有这个代码片段:
SQLiteDatabase.openDatabase(mPath, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS);
可以帮我看下问题所在吗?谢谢!

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:57:48

    我经常用下面的步骤从assets文件夹中复制数据库

    private void copyDatabase() throws IOException{
    
            InputStream inputStream = context.getAssets().open(DB_NAME);
            String dbCreatePath = DB_PATH+DB_NAME;
            OutputStream outputStream = new FileOutputStream(dbCreatePath);
            byte[] buffer = new byte[1024];
            int length;
            while((length = inputStream.read(buffer))>0){
                outputStream.write(buffer,0,length);
            }
            outputStream.flush();
            outputStream.close();
            inputStream.close();
    }
    然后我会用下面的方法检查一遍:
    
    private boolean checkDatabase(){
        SQLiteDatabase checkDB = null;
        try {
            String dbPath = DB_PATH+DB_NAME;
            checkDB = SQLiteDatabase.openDatabase(dbPath, null,     
                SQLiteDatabase.OPEN_READWRITE);
        } catch (SQLiteException e) {
            // TODO: handle exception
        }
        if(checkDB!=null){
            checkDB.close();}
        return checkDB != null ? true:false;
    
    }
    0 0
相关问答

1

回答

数据库架构有哪几种?

2022-10-18 15:50:12 167浏览量 回答数 1

1

回答

db2数据库

2021-10-13 10:55:06 1252浏览量 回答数 1

1

回答

打开网址出现数据库的提示

2018-12-22 16:32:39 312浏览量 回答数 1

1

回答

数据库连接异常

2018-05-25 14:07:09 568浏览量 回答数 1

0

回答

数据库管理

2018-05-14 17:06:14 2031浏览量 回答数 0

4

回答

phpwind4.6换成phpwind9.0.2时数据库的转移

2018-02-27 13:44:32 3031浏览量 回答数 4

1

回答

关于使用Sqlite3操作数据库时不能打开sqlite3

2016-03-16 14:00:39 2261浏览量 回答数 1

1

回答

用spring aop处理日志,在往数据库插入日志出错时,会影响主线程吗

2016-03-03 14:49:55 2604浏览量 回答数 1

3

回答

不小心把数据库给删了

2015-07-15 21:03:43 3209浏览量 回答数 3

1

回答

数据库管理

2012-12-20 10:13:23 5490浏览量 回答数 1
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
数据库2025 V3
立即下载
阿里云数据库案例集下载
立即下载
为什么PostgreSQL是最适合去O的数据库
立即下载