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对象

就能够自己主动推断了

最新文章

  1. *****linux下redis安装
  2. [poj2337]求字典序最小欧拉回路
  3. 双系统先装Windows,后装linux的原因
  4. TJI读书笔记14-闭包与回调
  5. GLSL Interface Block参考
  6. 【体系结构】Oracle参数介绍
  7. MySQL出现大量unauthenticated user的问题
  8. redis命令参考
  9. 28 个必备的 Linux 命令行工具
  10. Android自定义视图教程
  11. poj 1852 Ants_贪心
  12. OpenStack导入镜像后Launch不起来的几个问题
  13. Linux忘记rootpassword
  14. 1.centOS安装Mysql
  15. php-laravel4.0框架 简单快速入门
  16. 无后台应用 Stash Backend
  17. Polar Code(1)关于Polar Code
  18. What is REST API
  19. Java,mysql String与date类型转换
  20. Pandas 学习记录(一)

热门文章

  1. .net中的泛型
  2. Android内存优化12 内存泄漏常见情况3 注册泄漏
  3. Linux下的基础命令
  4. iOS: 常用的宏
  5. 解决:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile
  6. C++ new的nothrow关键字和new_handler用法
  7. vue - webpack.dev.conf.js
  8. (原创)开发使用Android studio所遇到的一些问题总结
  9. Android常用异步任务执行方法
  10. 运用Unity实现AOP拦截器[结合异常记录实例]