复制自定义的 sqlite 数据库到 android 中的错误-问答-阿里云开发者社区-阿里云

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

复制自定义的 sqlite 数据库到 android 中的错误

2016-06-16 15:43:26 1742 1

我想复制一个自定义的 sqlite 数据库到 android 中

public class DataBaseHelper extends SQLiteOpenHelper
{
private static String TAG = "DataBaseHelper"; // Tag just for the LogCat window
private static String DB_PATH = "/data/data/mypackagename/databases/";//path of our database
private static String DB_NAME ="application-database";// Database name
private SQLiteDatabase mDataBase; 
private final Context mContext;
public DataBaseHelper(Context context) 
{
    super(context, DB_NAME, null, 1);
    DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
    this.mContext = context;
}   
public void createDataBase() throws IOException
{
    //If database not exists copy it from the assets
      boolean mDataBaseExist = checkDataBase();
    if(!mDataBaseExist)
    {
        this.getReadableDatabase();
        this.close();
        try 
        {
            //Copy the database from assests
            copyDataBase();
            Log.e(TAG, "createDatabase database created");
        } 
        catch (IOException mIOException) 
        {
            throw new Error("ErrorCopyingDataBase");
        }
    }
}

当运行到 InputStream mInput = mContext.getAssets().open(DB_NAME);
给出一个错误,程序直接跳转到

catch (IOException mIOException) 
        {
            throw new Error("ErrorCopyingDataBase");
        }

数据库是在 assets 文件夹中。
这个问题出在哪里呢?

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 19:41:06
      /**
         * 
         * @param sqlQuery SQL query to be fired
         * @param myObj Object to be fetched
         * @return Returns a Vector object containing raws fetched by the sqlQuery
         */
    
        public ArrayList<Object> fetchAllRows(String sqlQuery, Object myObj)
        {
            ArrayList<Object> records = new ArrayList<Object>();
            Object newObj;
            Cursor cursor = execQuery(sqlQuery);
    
            if (cursor != null) {
                while (cursor.moveToNext()) {
                    //          System.out.println("Test While");
                    newObj = ClassUtils.newObject(myObj);
                    for (int i = 0; i < cursor.getColumnCount(); i++) {
                        String key = cursor.getColumnName(i);
                        String value = cursor.getString(i);
                        if (value == null) {
                            value = "";
                        }
                        ClassUtils.objectMapping(newObj, key, value);
                    }
                    records.add(newObj);
                }
                cursor.close();
            }
            return records;
        }
        @Override
        public void onCreate(SQLiteDatabase db) 
        {
    
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
        {
    
        }
    }

    在第一个 activity 中添加下面的代码:

     Global.context = this;
     Global.dbMain = new DBConnect(this, Global.DB_MAIN);

    创建一个 Global.java 文件

    public class Global 
    {
        public static String DB_PATH = "data/data/YOUR_PACKAGE_NAME/databases/";
        public static final String DB_MAIN = "Database.sqlite";
    
        public static Context context;
        public static DBConnect dbMain;
    }

    现在假定你想从表格中选择信息

    Global.dbMain.openDataBase();
    System.out.println("database open ");
        try
        {
          Cursor c = Global.dbMain.execQuery("select * from tableName", null);
          while(c.moveToNext())
           {
             System.out.println("in while");
             String str= c.getString(1);
           }
          c.close();
        }
        catch(Exception e)
        {
          e.printStackTrace();
        }
    Global.dbMain.close();
    0 0
相关问答

1

回答

【移动推送】android 走厂商辅助通道时可以自定义推送的铃声吗?

2022-10-14 22:00:39 38浏览量 回答数 1

0

回答

ARMS的App监控如何上报android app的自定义错误?

2021-01-11 20:07:17 372浏览量 回答数 0

0

回答

Android推送消息,在关闭App后 收到推送,但播放自定义铃声没有声音

2020-11-27 19:25:48 483浏览量 回答数 0

1

回答

Android fragment中引用自定义view报错 ?报错

2020-06-23 20:33:31 297浏览量 回答数 1

1

回答

Android 自定义Button按钮显示样式(正常、按下、获取焦点):报错

2020-06-09 23:22:51 1570浏览量 回答数 1

1

回答

android 自定义view的理解:报错

2020-06-09 11:24:17 322浏览量 回答数 1

1

回答

android中关于如何自定义添加监听器:报错

2020-06-07 20:15:55 326浏览量 回答数 1

1

回答

android中自定义view高宽使用match_parent后不能自适应,请求?400报错

2020-06-05 13:14:36 495浏览量 回答数 1

1

回答

Android 自定义锁屏报错

2020-06-03 09:37:21 210浏览量 回答数 1

1

回答

移动推送Android SDK:移动推送的服务进程名称能否修改,是否支持自定义后台进程,以进程的保活

2020-03-27 23:03:01 503浏览量 回答数 1
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
文章
问答
问答排行榜
最热
最新
相关电子书
更多
Android应用启动速度和内存优化实践
立即下载
Android内存泄漏自动化链路分析组件Probe
立即下载
Android热修复技术原理详解与升级探索
立即下载