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

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

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

2016-06-16 15:43:26 1697 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 自定义AsAlertDialog不能全屏

2016-06-12 14:05:33 2521浏览量 回答数 1

0

回答

OSS Android SDK 不支持直接使用accessKeyId对私有Bucket进行访问?

2021-12-14 15:08:54 183浏览量 回答数 0

1

回答

移动推送Android SDK:部分手机接入推送SDK后,推送回调(onSuccess、onFail

2021-02-24 12:38:46 264浏览量 回答数 1

1

回答

关于 视频直播 推流 android SDK中 onVideoData回调参数问题

2021-02-18 20:20:10 592浏览量 回答数 1

1

回答

生活物联网Android SDK中 IoTSmart.init(this); 运行报错

2020-08-04 17:18:09 1014浏览量 回答数 1

1

回答

使用azure moble app android客户端sdk android5?报错

2020-06-24 13:34:23 219浏览量 回答数 1

1

回答

用户反馈Android SDK:找不到alicloud-android-feedback.aar,如

2020-03-27 21:32:17 489浏览量 回答数 1

0

回答

用户反馈Android SDK:如何关闭沉浸式任务栏?

2017-10-24 10:51:51 1261浏览量 回答数 0

1

回答

Android SDK Manager

2016-06-13 14:36:16 1872浏览量 回答数 1

1

回答

在android sdk manager中下载东西出现怎么图这是什么原因?如何解决?

2016-03-10 08:42:15 1693浏览量 回答数 1
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载