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. C语言函数以及函数的使用
  2. android 数据库 备份还原
  3. Android SQLiteOpenHelper(手机数据库)
  4. [Android Studio] Android Studio如何提示函数用法
  5. Android中有关数据库SQLite的介绍
  6. android 调用draw(canvas) 函数自动退出
  7. android常用数据库字段描述
  8. Android/Bluetooth 初始化流程
  9. android SQLite数据库使用实例

随机推荐

  1. Android二维码扫描功能的集成开发
  2. Android中activity的启动模式
  3. Android字符串进阶之二:字符及字符串的测
  4. Android(安卓)Instrumentation源码分析(附
  5. Android RIL学习
  6. Android 输入系统 与 按键
  7. ClassLoader解析以及应用
  8. Android导入数据库
  9. Android GridView根据Item的行数设置高度
  10. Android(安卓)Studio里c++保存opencv mat