android 建数据库 SQLite 存储sd 卡或者内存

android 创建数据库调用SQLiteOpenHelper,一般不直接操作SQLiteDatabase 。

是通过SQLiteOpenHelper来获取

public class DBOpenHelper extends SQLiteOpenHelper {

private static final int VERSION = 1;// 定义数据库版本

private static final String PATH = Environment

.getExternalStorageDirectory().getPath();

// 有些没有sd卡所以没写进去

private static final String DBNAME ="flexemdata.db";// 定义数据库名   PATH+ "/"+

private final static String TAG = "DBOpen";

public DBOpenHelper(Context context) {// 定义构造函数

super(context, DBNAME, null,VERSION);// 重写基类的构造函数

}

// 当第一次创建数据库时回调该方法

@Override

public void onCreate(SQLiteDatabase db) {

Log.i(TAG, "创建数据表");

db.beginTransaction();

try {

// 创建实时数据表

db.execSQL("create table alarm(sensorname integer primary key autoincrement,uid ,code ,alarmMessage ,timeCreated,boxuid)");

Log.i(TAG, "初始化数据库");

// 初始化实时数据表

db.execSQL("insert into alarm(uid,code,alarmMessage,timeCreated,boxuid)values(‘0‘,‘0‘,‘0‘,‘0‘,‘0‘)");

db.setTransactionSuccessful();

} finally {

db.endTransaction();

}

}

// 当数据库版本号更新时回调该方法

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)// 覆写基类的onUpgrade方法,以便数据库版本号更新

{

// oldVersion=舊的資料庫版本号。newVersion=新的資料庫版本号

db.execSQL("DROP TABLE IF EXISTS " + DBNAME); // 刪除舊有的資料表

onCreate(db);

}

public boolean deleteDatabase(Context context) {

return context.deleteDatabase(DBNAME);

}

这个类以下有数据库创建,相对路径是直接存储在本程序的database以下。假设用绝对路径,就能够自选。是否sd卡。

在用到的类里面

private DBOpenHelper helper;// 创建DBOpenHelper对象

private SQLiteDatabase db;// 创建SQLiteDatabase对象

{

helper = new DBOpenHelper(context);// 初始化DBOpenHelper对象

db = helper.getReadableDatabase();// 初始化SQLiteDatabase对象

}

直接用getReadableDatabase来获取数据库SQLiteDatabase对象。

这里讲一下怎么自己主动选择有sd卡就存在sd卡,没有就存储在内存中。

public DBOpenHelper(Context context) {// 定义构造函数

super(context, DBNAME, null,VERSION);// 重写基类的构造函数

}

这个构造函数改完

public DBOpenHelper(Context context,String name) {// 定义构造函数

super(context, name, null,VERSION);// 重写基类的构造函数

}

然后在用到的activity里面推断

if (android.os.Environment.getExternalStorageState().equals(

android.os.Environment.MEDIA_MOUNTED)) {

name=Environment.getExternalStorageDirectory().getPath()+“/”+“alarm.db”;

}else{

name="alarm.db";

}

然后调用

helper = new DBOpenHelper(context。name);// 初始化DBOpenHelper对象

就能够自己主动推断了

时间: 2024-10-26 01:57:56

android 建数据库 SQLite 存储sd 卡或者内存的相关文章

Android将数据库保存到SD卡的实现

??有时候为了需要,会将数据库保存到外部存储或者SD卡中(对于这种情况可以通过加密数据来避免数据被破解),比如一个应用支持多个数据,每个数据都需要有一个对应的数据库,并且数据库中的信息量特别大时,这显然更应该将数据库保存在外部存储或者SD卡中,因为RAM的大小是有限的:其次在写某些测试程序时将数据库保存在SD卡更方便查看数据库中的内容. ??Android通过SQLiteOpenHelper创建数据库时默认是将数据库保存在'/data/data/应用程序名/databases'目录下的,只需要在

Android中使用SQLiteOpenHelper管理SD卡中的数据库

使用Android中自带的SQLiteOpenHelper可以完成数据库的创建与管理,但有两点局限: (1)数据库创建在内存卡中,大小受限,创建位置位于/data/data/应用程序名/databases中(可使用Eclispe的DDMS查看). (2)如果无法获取Root权限,则无法直接查看创建的数据库. 鉴于上述限制及实际需要,打算使用SQLiteOpenHelper管理SD卡上的数据库,通过研究SQLiteOpenHelper的源码,发现其创建或打开数据库的代码位于getWritableD

android 写行为日志到SD卡 并发处理 异步写入数据到文件不影响界面响应时间

公司在做一个项目 要求记录用户行为,写行为日志文件到SD卡.实现思想 不影响界面用户体验,要时时记录日志 不能漏掉. 1.并发处理日志 写一个类负责管理各个线程传过来的日志数据,日志数据放在队列中等待写线程去处理.这里每次添加一条日志数据都会检查写日志线程是否在工作,同时为了并发处理传过来的数据采用synchronized 同步: ConcurrentLinkedQueue 是基于链接节点的.线程安全的队列.并发访问不需要同步.因为它在队列的尾部添加元素并从头部删除它们,所以只要不需要知道队列的

android 读取,写入图片到sd卡源码

<pre name="code" class="html"><!--<span style="font-family: Arial, Helvetica, sans-serif;">在AndroidMainfest.xml文件中添加</span><span style="font-family: Arial, Helvetica, sans-serif;">-->&l

Android下获取手机和SD卡的总空间和可用空间

获取SD卡的总空间和可用空间 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); long availableBlocks = stat.getAvailableBlocks(); long tota

android.uid.system无法读取SD卡信息

[Android]android.uid.system无法读取SD卡信息[转] 在AndroidManifest.xml中我们可以看到android:sharedUserId="android.uid.system"但是有了这句后,就无法对sd卡进行读写操作,比如在SD卡中创建一个新文件夹,是创建不成功的. 但是如果把android:sharedUserId="android.uid.system"注释掉,就可以在SD卡进行IO操作了. 在Settings中andr

android文件缓存,并SD卡创建目录未能解决和bitmap内存溢出解决

1.相关代码: 加入权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> /** 获取SD卡路径 **/ private static String getSDPath() { St

【转】afinal来操作android的数据库sqlite

今天给大家介绍下#afinal#来操作android的数据库sqlite. #afinal#是一个android的orm.ioc快速开发框架,里面包含了四大功能:空间的id绑定和事件绑定功能:网络图片的显示功能(里面包含了强大的缓存框架):数据库sqlite的操作功能:http数据的读取功能(支持ajax方式读取): #afinal#开源网址:https://github.com/yangfuhai/afinal 这篇文章主要是介绍afinal的功能之一FinalDb组件,其他组件请关注我的博客

Android 存储(本地存储 SD卡存储 SharedPreference SQLite ContentProvider)

本文出自:http://blog.csdn.net/dt235201314/article/details/73176149 源码下载欢迎Star(updating):https://github.com/JinBoy23520/CoderToDeveloperByTCLer 一丶慨述 本周的学习内容是Android存储,要求:数据库Sqlite相关操作,常用的文件存取方式,以及实用场景学习,主要学习Sqlite,SD卡文件操作,SharedPreference 二丶效果演示: