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对象
就能够自己主动推断了
最新文章
- *****linux下redis安装
- [poj2337]求字典序最小欧拉回路
- 双系统先装Windows,后装linux的原因
- TJI读书笔记14-闭包与回调
- GLSL Interface Block参考
- 【体系结构】Oracle参数介绍
- MySQL出现大量unauthenticated user的问题
- redis命令参考
- 28 个必备的 Linux 命令行工具
- Android自定义视图教程
- poj 1852 Ants_贪心
- OpenStack导入镜像后Launch不起来的几个问题
- Linux忘记rootpassword
- 1.centOS安装Mysql
- php-laravel4.0框架 简单快速入门
- 无后台应用 Stash Backend
- Polar Code(1)关于Polar Code
- What is REST API
- Java,mysql String与date类型转换
- Pandas 学习记录(一)
热门文章
- .net中的泛型
- Android内存优化12 内存泄漏常见情况3 注册泄漏
- Linux下的基础命令
- iOS: 常用的宏
- 解决:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile
- C++ new的nothrow关键字和new_handler用法
- vue - webpack.dev.conf.js
- (原创)开发使用Android studio所遇到的一些问题总结
- Android常用异步任务执行方法
- 运用Unity实现AOP拦截器[结合异常记录实例]