android读取mysql数据库文件_android-从资产文件夹中读取数据库

为了充分利用打包的数据库(即作为资产包括的数据库),必须解压缩(自动)数据库并将其复制到合适的位置(最常见的是data / data /< package_name> / databases /< basebase_name>其中< ; package_name>和< database_name>将分别根据应用程序的软件包名称和数据库名称来确定).

要“打包”数据库,应将其包含在资产文件夹中,最好包含在数据库文件夹中(如果使用SQLiteAssetHelper而不进行修改,则是必需的).

另外,必须在实际打开数据库之前完成副本,然后才能打开数据库.

利用SQLiteAssetHelper

>第一步是创建要打包的数据库,因为有许多可用的工具,所以这不会涉及.对于此示例,数据库是名为test.db的文件

>在这种情况下,您应该创建您的项目,该项目已被称为DBtest,Compnay Domian为com.DBtest,因此程序包名称为dbtest.com.dbtest.

>下一步是将数据库复制到资产文件夹.

>在src / main文件夹中创建资产文件夹(如果尚不存在).

>在** assets文件夹中创建数据库“”文件夹(如果尚不存在).

>将数据库文件(在此示例中为test.db)复制到数据库文件夹中.

> 64549e4e4f8e291c3a794fff7056138d.png

>下一步是通过将项目包含在App的build.gradle中来设置项目以利用SQLiteAssetHelper.

>在App文件夹中编辑build.gradle.

>在相关性部分中添加行实现’com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1′.

>单击立即同步

25921c3c63030a14dd6379e28c1f8e37.png

>创建一个类,该类是新的/现在可用的SQLiteAssethelper类的子类.在本练习中,它将称为DBHelper.

>右键单击MainActivity Java类,选择New,然后选择Java Class.

>在名称字段中输入DBHelper.

>在SuperClass字段中,开始输入SQLiteAsset(现在可以选择SQliteAssetHelper类),因此选择它.它应该解决为:

>单击确定.

74bde5522ccc7121d30151837c0ee9c5.png

>按照以下步骤为DBHelper类创建构造函数:

: –

public class DBHelper extends SQLiteAssetHelper {

public static final String DBNAME = "test.db"; //<<<< must be same as file name

public static final int DBVERSION = 1;

public DBHelper(Context context) {

super(context,DBNAME,null,DBVERSION);

}

}

>创建DBHelper的实例,然后访问数据库.

>为方便起见,另一个类名为CommonSQLiteUtilities,从Are there any methods that assist with resolving common SQLite issues?复制而来

>使用类似于以下内容的方法创建DBHelper cclass的实例

> DBHelper mDBHlpr =新的DBHelper(this);

>使用CommonSQLiteUtilities,使用以下命令访问数据库:

> CommonSQLiteUtilities.logDatabaseInfo(mDBHlpr.getWritableDatabase());

> MainActivity完全成为

: –

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

DBHelper mDBHlpr = new DBHelper(this);

CommonSQLiteUtilities.logDatabaseInfo(mDBHlpr.getWritableDatabase());

}

}

结果是成功的运行日志记录:-

04-11 06:12:55.091 1401-1401/dbtest.com.dbtest W/SQLiteAssetHelper: copying database from assets...

database copy complete

04-11 06:12:55.123 1401-1401/dbtest.com.dbtest I/SQLiteAssetHelper: successfully opened database test.db

04-11 06:12:55.127 1401-1401/dbtest.com.dbtest D/SQLITE_CSU: DatabaseList Row 1 Name=main File=/data/data/dbtest.com.dbtest/databases/test.db

Database Version = 1

Table Name = mytable Created Using = CREATE TABLE mytable (

_id INTEGER PRIAMRY KEY,

mydata TEXT,

inserted INTEGER DEFAULT CURRENT_TIMESTAMP

)

Table = mytable ColumnName = _id ColumnType = INTEGER PRIAMRY KEY Default Value = null PRIMARY KEY SEQUENCE = 0

Table = mytable ColumnName = mydata ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0

Table = mytable ColumnName = inserted ColumnType = INTEGER Default Value = CURRENT_TIMESTAMP PRIMARY KEY SEQUENCE = 0

Table Name = android_metadata Created Using = CREATE TABLE android_metadata (locale TEXT)

Table = android_metadata ColumnName = locale ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0

>前两行来自SQliteAssethelper,其余行来自CommonSQLiteUtilities类的logDatabaseInfo方法.

>在子序列运行时,将不会复制数据库,因为它已经存在.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值