美文网首页
android sqlite 使用详情

android sqlite 使用详情

作者: XX杰 | 来源:发表于2018-01-08 19:06 被阅读0次

sqlite android 本地数据库,用来存储少量的数据 或者 用来处理 缓存


public class SqliteDbHelper extends SQLiteOpenHelper {

 private static final int DB_VERSION = 1; 

 private static SqliteDbHelper instance; 

 private static String TABLE_NAME; 

 private Map CREATE_TABLE_SQL = new HashMap<>();

    //SQLiteOpenHelper创建数据库时默认是将数据库保存在’/data/data/应用程序名/databases’目录下

    protected static SqliteDbHelper getInstance(Context context) {

        if (null == instance) {

            TABLE_NAME = context.getResources().getString(R.string.app_name) + ".db";

            instance = new SqliteDbHelper(context, TABLE_NAME);

        }

        return instance;

    }

    private SqliteDbHelper(Context context, String name) {

        super(context, name, null, DB_VERSION, null);

        CREATE_TABLE_SQL.clear();

    }

    @Override

    public void onCreate(SQLiteDatabase sqLiteDatabase) {

        for (String sql : CREATE_TABLE_SQL.values()) {

            sqLiteDatabase.execSQL(sql);

        }

    }

    @Override

    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

        String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;

        sqLiteDatabase.execSQL(sql);

        onCreate(sqLiteDatabase);

    }

    public boolean createTable(String name, String... items) {

        if (CREATE_TABLE_SQL.containsKey(name)) {

            return false;

        }

        String sql = "create table if not exists " + name

                + " (Id integer primary key";

        for (String item : items) {

            sql += (", " + item + "text");

        }

        sql += ")";

        CREATE_TABLE_SQL.put(name, sql);

        this.onCreate(this.getReadableDatabase());

        return true;

    }

}


需要一个 manager 来管理所有的 增删改查 同时需要自己 写简单 sql 语句

public class SqliteManager {

private static SqliteManagerinstance;

private static SqliteDbHelperdbHelper;

private void SqliteManager(){}

public static SqliteManager getInstance(Context context){

if (null ==instance){

instance =new SqliteManager();

dbHelper = SqliteDbHelper.getInstance(context);

}

return instance;

}

public void createTable(String name, String... items){

dbHelper.createTable(name, items);

}

//遍历出表名

    public String getAllTableName(Context context) {

SqliteDbHelper helper = SqliteDbHelper.getInstance(context);

SQLiteDatabase db = helper.getWritableDatabase();

db.beginTransaction();

String result =null;

Cursor cursor = db.rawQuery("select name from sqlite_master where type='table';",null);

Log.e("xiaobo cursor column  ", cursor.getCount()+"");

while(cursor.moveToNext()){

//遍历出表名

            result += cursor.getString(0) +"  ";

}

db.setTransactionSuccessful();

db.endTransaction();

return result;

}

public int insertTableItem(Context context, String name, ContentValues item) {

SqliteDbHelper helper = SqliteDbHelper.getInstance(context);

SQLiteDatabase db = helper.getWritableDatabase();

db.beginTransaction();

db.insertOrThrow(name,null, item);

db.setTransactionSuccessful();

db.endTransaction();

return 0;

}

}


只有增加的 方法,个人目前 喜欢写 简单的sql 语句进行查询。但是依旧需要 model类的引入。

相关文章

网友评论

      本文标题:android sqlite 使用详情

      本文链接:https://www.haomeiwen.com/subject/mlzbnxtx.html