Android 数据库SQLite 写入SD卡
如果手机没有root,数据库文件是无法查看到的,不方便调试。
最好的办法是把数据库写进SD卡。
修改的地方有两处:
1.在你的helper类中把数据库文件名称 DATABASE_NAME 由原来的一个文件名,修改成路径的形式。
修改前:DATABASE_NAME = "demo.db"
public class MyDBHelper extends SQLiteOpenHelper {
public static final int VERSION = 1; //数据库版本号
public static final String DATABASE_NAME = "demo.db"; //数据库名称
public static final String TABLE_NAME = "mytag"; //数据表名称,一个数据库可以包含多张数据表,类似于excel中的sheet1,sheet2
//MyDBHelper 的构造函数,我们关心的是名称DATABASE_NAME和版本VERSION
public MyDBHelper(Context context) {
super(context, DATABASE_NAME, null, VERSION);
}
修改后:DATABASE_NAME = "/mnt/sdcard/demo.db"
public class MyDBHelper extends SQLiteOpenHelper {
public static final int VERSION = 1; //数据库版本号
public static final String DATABASE_NAME = "/mnt/sdcard/demo.db"; //数据库名称
public static final String TABLE_NAME = "mytag"; //数据表名称,一个数据库可以包含多张数据表,类似于excel中的sheet1,sheet2
//MyDBHelper 的构造函数,我们关心的是名称DATABASE_NAME和版本VERSION
public MyDBHelper(Context context) {
super(context, DATABASE_NAME, null, VERSION);
}
因为如果只是一个单独的文件名,最后创建的数据库文件就是保存在手机内部存储卡(不是运行内存,也不是SD卡)的/data/data/包名称/databases 目录下,而没有root的手机,这个/data根文件夹是进不去的,用adb shell方式也打不开。
如果想把数据库文件.db保存到SD卡 某个目录中,则先要检测该目录是否存在,不存在则要创建。可以在MyApplication中完成这项初始化操作:
/**
* 在这里进行(1)ImageLoader的全局配置
* (2)数据库目录的创建
* (3)定义全局常量
* Created by LiChong on 2016/4/29.
*/
public class MyApplication extends Application {
//全局常量
public static final String DBDir = Environment.getExternalStorageDirectory() + File.separator
+ "MyDressingHelper" + File.separator
+ "databases" + File.separator; //数据库所在目录 @Override
public void onCreate(){
super.onCreate();
Log.d("mylog", "进入Application的onCreate(),Application的onCreate()是App最先执行的部分所以可以在这里进行整个应用的相关初始化"); //初始化ImageLoader的全局配置
initImageLoader(getApplicationContext()); //初始化数据库配置
File dir = new File(DBDir); //检测数据库目录是否存在,不存在则创建
if(!dir.exists()){
dir.mkdirs();
}
} //ImageLoader全局配置
public static void initImageLoader(Context context){
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.diskCacheFileCount(20) //缓存文件数量
.tasksProcessingOrder(QueueProcessingType.LIFO)
.build(); //开始构建
ImageLoader.getInstance().init(imageLoaderConfiguration); //全局初始化配置ImageLoader
}
}
建立了自己的Application类后还要在Manifest中添加它的名字才能启动:
<application
android:name=".MyApplication"
2.最后,千万别忘了修改权限!
Android手机是有着严格的安全管控的,SD卡属于外部存储器,访问上面的文件需要添加权限。
在AndroidManifest.xml 中添加两条SD卡读写权限即可:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
如果没有添加权限,那么程序就会异常终止。
Android 数据库SQLite 写入SD卡的更多相关文章
- 转 Android:文件下载和写入SD卡学习小结
转自 http://blog.csdn.net/zzp_403184692/article/details/8160739 一.文件下载 Android开发中,有时需要从网上下载一些资源以供用户使 ...
- android 建数据库 SQLite 存储sd 卡或者内存
android 创建数据库调用SQLiteOpenHelper,一般不直接操作SQLiteDatabase . 是通过SQLiteOpenHelper来获取 public class DBOpenHe ...
- Android 下载文件及写入SD卡
Android 下载文件及写入SD卡,实例代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- Android从网络某个地址下载文件、写入SD卡
首先创建一个HttpDownloader类,获取下载文件的网络地址,将文件下载下来以String流的方式返回: public String download(String urlStr){ //url ...
- android 将项目下的数据库拷贝到sd卡中
/** * 将项目下的数据库拷贝到sd卡中 */ public static boolean copyDbToSdCard() { FileInputStream fis = null; FileOu ...
- Android数据存储之SD卡
为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件.SD卡大大扩充手机的存储能力. 操作SD首先要加权限: <!--在SDCard中创建与删除文件权限 --> < ...
- [android] 保存文件到SD卡
/****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/d ...
- Android中播放本地SD卡中歌曲须要的加入的权限
使用MediaPlayer播放本地Mp3文件时.须要注意的訪问路径的问题以及訪问权限的问题. 1.訪问路径:/storage/emulated/0 此路径即为手机的根路径,能够通过下载ES文件浏览器软 ...
- android 写文件到sd卡问题小记
android 写文件到sd卡问题小记 事情是这样子的.... 这天我开始编写项目调试工具,高大上不?-----其实就是记录实时网络请求和崩溃日志相关等的小工具(此处一个会心的微笑). 然后我是这样写 ...
随机推荐
- SQL--使用NewID函数,创建GUID列
USE master GO IF EXISTS (SELECT * FROM sysdatabases WHERE name='DB_Temp') DROP DATABASE DB_Temp GO C ...
- 将RichTextBox的内容直接写入数据库:
将RichTextBox的内容直接写入数据库: private void button1_Click(object sender, EventArgs e) { System.IO.Memory ...
- 功能更新到 Windows 10 企业版, 版本 1607
功能更新到 Windows 10 企业版, 版本 1607
- 基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动
为了提高客户体验和进行一些技术探索,现在正准备把我自己的客户关系管理系统CRM在做一个Web的版本,因此对基于MVC的Web界面继续进行一些研究和优化,力求在功能和界面上保持和Winform一致,本文 ...
- SQL更改表字段为自增标识
下面是SQL语句: --删除主键约束 ) select @Constraint_Name = Name from dbo.sysobjects where Xtype = 'PK' and Paren ...
- NoSQL入门概述
入门概述 1 NoSQL是什么? NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关 ...
- 图-最短路径-Dijktra(迪杰斯特拉)算法
1. 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉算法于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以起始 ...
- 《Java4Android》视频学习笔记——抽象类和抽象函数
抽象函数的语法特征 1.类是抽象的,对象是具体的.面向对象里面有个非常重要的特征:先抽象,后具体. 2.只有函数的定义,而没有函数体的函数叫做抽象函数. abstract void fun(); ( ...
- C#之第五单元的项目打印购物单
人生的坚持,学习的坚持,尽管遭遇困苦,但是我们却能在一次次的苦难中成长,重新爬起来.这就是奋斗的人生.就是挥洒自己青春,汗水的有意义,有价值的生活.而,我虽然在平凡的人群中不起眼,可是每个人却闪耀着自 ...
- ecshop适应PHP7的修改
说实话,ecshop这个系统,到目前也没见怎么推出新版本,如果是新项目,不太建议使用它.不过,因为我一直以来都在使用中,所以不得不更改让其适应PHP新版本.现在PHP 7已经出发行版了,所以更改来继续 ...