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

    就能够自己主动推断了




  • 相关阅读:
    查看.NET Core源代码通过Autofac实现依赖注入到Controller属性
    序列化二叉树
    把二叉树打印成多行
    按之字形顺序打印二叉树
    对称的二叉树
    JDK源码阅读顺序
    二叉树的下一个结点
    删除链表中重复的结点
    链表中环的入口结点
    字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7285886.html
Copyright © 2020-2023  润新知