一个封装类教你学会SQLite数据库

数据库操作类的命名一般以Dao为结尾,什么是Dao呢?

DAO(Data Access Object) 数据访问对象是第一个面向对象的数据库接口

数据实体类

public class Tree {
    private int id;
    private String name;
    private int age;
    private float price;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public Tree() {
    }

    public Tree(String name, int age, float price) {
        this.name = name;
        this.age = age;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Tree{" +
                "id=" + id +
                ", name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ", price=" + price +
                ‘}‘;
    }
}

数据库操作封装类

public class TreeDBDao {

    private static final String DB_NAME = "tree.db";//数据库名称
    private static final String TABLE_NAME = "treeinfo";//数据表名称
    private static final int DB_VERSION = 1;//数据库版本

    //表的字段名
    private static String KEY_ID = "id";
    private static String KEY_NAME = "name";
    private static String KEY_AGE = "age";
    private static String KEY_PRICE = "price";

    private SQLiteDatabase mDatabase;
    private Context mContext;
    private TreeDBOpenHelper mDbOpenHelper;//数据库打开帮助类

    public TreeDBDao(Context context) {
        mContext = context;
    }

    //打开数据库
    public void openDataBase() {
        mDbOpenHelper = new TreeDBOpenHelper(mContext, DB_NAME, null, DB_VERSION);
        try {
            mDatabase = mDbOpenHelper.getWritableDatabase();//获取可写数据库
        } catch (SQLException e) {
            mDatabase = mDbOpenHelper.getReadableDatabase();//获取只读数据库
        }
    }

    //关闭数据库
    public void closeDataBase() {
        if (mDatabase != null) {
            mDatabase.close();
        }
    }

    //插入一条数据
    public long insertData(Tree tree) {
        ContentValues values = new ContentValues();
        values.put(KEY_NAME, tree.getName());
        values.put(KEY_AGE, tree.getAge());
        values.put(KEY_PRICE, tree.getPrice());
        return mDatabase.insert(TABLE_NAME, null, values);
    }

    //删除一条数据
    public long deleteData(long id) {
        return mDatabase.delete(TABLE_NAME, KEY_ID + "=" + id, null);
    }

    //删除所有数据
    public long deleteAllData() {
        return mDatabase.delete(TABLE_NAME, null, null);
    }

    //更新一条数据
    public long updateData(long id, Tree tree) {
        ContentValues values = new ContentValues();
        values.put(KEY_NAME, tree.getName());
        values.put(KEY_AGE, tree.getAge());
        values.put(KEY_PRICE, tree.getPrice());
        return mDatabase.update(TABLE_NAME, values, KEY_ID + "=" + id, null);
    }

    //查询一条数据
    public List<Tree> queryData(long id) {
        Cursor results = mDatabase.query(TABLE_NAME, new String[]{KEY_ID, KEY_NAME, KEY_AGE, KEY_PRICE},
                KEY_ID + "=" + id, null, null, null, null);
        return convertToTree(results);
    }

    //查询所有数据
    public List<Tree> queryDataList() {
        Cursor results = mDatabase.query(TABLE_NAME, new String[]{KEY_ID, KEY_NAME, KEY_AGE, KEY_PRICE},
                null, null, null, null, null);
        return convertToTree(results);

    }

    private List<Tree> convertToTree(Cursor cursor) {
        int resultCounts = cursor.getCount();
        if (resultCounts == 0 || !cursor.moveToFirst()) {
            return null;
        }
        List<Tree> mTreeList = new ArrayList<>();
        for (int i = 0; i < resultCounts; i++) {
            Tree tree = new Tree();
            tree.setId(cursor.getInt(0));
            tree.setName(cursor.getString(cursor.getColumnIndex(KEY_NAME)));
            tree.setAge(cursor.getInt(cursor.getColumnIndex(KEY_AGE)));
            tree.setPrice(cursor.getFloat(cursor.getColumnIndex(KEY_PRICE)));
            mTreeList.add(tree);
            cursor.moveToNext();
        }
        return mTreeList;
    }

    /**
     * 数据表打开帮助类
     */
    private static class TreeDBOpenHelper extends SQLiteOpenHelper {

        public TreeDBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, factory, version);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            final String sqlStr = "create table if not exists " + TABLE_NAME + " (" + KEY_ID + " integer primary key autoincrement, " + KEY_NAME + " text not null, " + KEY_AGE + " integer," + KEY_PRICE + " float);";
            db.execSQL(sqlStr);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            final String sqlStr = "DROP TABLE IF EXISTS " + TABLE_NAME;
            db.execSQL(sqlStr);
            onCreate(db);
        }
    }
}

使用方法

TreeDBDao mDBDao = new TreeDBDao(MainActivity.this);//实例化对象
mDBDao.openDataBase();//打开数据库

//增删改查操作

mDBDao.insertData(new Tree("GreenTree", 12, 2321.5f));//增加数据
mDBDao.deleteData(1);//删除数据
mDBDao.updateData(1, new Tree("RedTree", 20, 5200f));//更新数据
mDBDao.deleteAllData();//删除所有数据

List<Tree> list = mDBDao.queryData(1);//查询id为1的数据
Log.v("-->", list.get(0).toString());

List<Tree> lists = mDBDao.queryDataList();//查询所有数据
for (Tree tree : lists) {
   Log.v("-->", tree.toString());
}

存储结果

时间: 2024-09-30 15:03:38

一个封装类教你学会SQLite数据库的相关文章

Andoird - SQLite 数据库 基础教程

链接来源 http://www.tutorialspoint.com/android/android_sqlite_database.htm SQLite是一个开源的SQL数据库,这个数据库把数据存储到设备的一个文本文件里.Android里面已经集成了SQLite数据库工具. SQLite 支持所有的关系数据库特点.为了进入SQLite数据,你不需要建立任何像JDBC,ODBC之类的连接. 数据库-包 主要的包是android.database.sqlite,这个包里面包含了管理你自己数据库的类

Android在API推荐的方式来实现SQLite数据库的增长、删除、变化、检查操作

package com.examp.use_SQLite.dao; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.examp

js -- 操作sqlite数据库

最近看到一个使用js来操作sqlite数据库的,测试了一下,具体使用的是 js操作类: https://github.com/kripken/sql.js/(sqlite js 驱动) 异步请求:http://npm.taobao.org/package/axios(异步请求插件,只有12.6k) 这里使用的js驱动是和服务器端使用方法一致,sql标准语法都支持,可以用第三方管理工具来管理数据文件 目前我使用的是 Navicat Premium 12. 下面是测试的源代码: 1. 数据库sql(

14 SQLite数据库

SQLite数据库SQLite 是一款轻型的数据库SQLite 的设计目标是嵌入式的SQLite 占用资源低SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机语言 可视化SQLite操作:数据大多以表的形式存储在数据库中,创建数据库就是将有所关联数据存储到一张表格中,所以可视化数据库操作就是在创建一个个的表格.在这里使用到SQLiteManager SQL语法(创建.增.删.查.改)创建表格create table if not exists 表名(字段

编写一个Android平台遇到的所有问题(一)——查询sqlite数据库时遇到的问题

本人处于本科毕业阶段,毕业设计要做一个安卓平台,对于java还是小白的我确实有点难度,不过在做的过程中还是收获很多,现在希望把自己在这个过程中遇到的各个问题和朋友们分享,大神们不喜勿喷,由于毕业设计要做半年,所以接下来的这个系列差不多也要写将近半年吧,我尽量坚持. 下面就开始吧!! 一.查询sqlite数据库时遇到的问题 相必对于所有的Android开发者来说,sqlite一定不陌生,今天我第一次接触就被她虐了40分钟,真是惭愧.关于数据库的其他操作我就不多说了,大家一定都很清楚,我着重说一下在

android之存储篇_SQLite数据库_让你彻底学会SQLite的使用

标签: Androiddatabase存储 2013-08-24 07:51 29984人阅读 评论(5) 收藏 举报  分类: android 基础知识(74)  数据库(3)  版权声明:本文为博主原创文章,未经博主允许不得转载. SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值. 但有一种情况例外:定义为INTEGER PRIM

一个小时学会MySQL数据库

一个小时学会MySQL数据库 目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数据库分类 1.3.1.关系型数据库 1.3.2.非关系型数据库 1.4.数据库规范化 1.4.1. 什么是范式 1.4.2. 三大范式 1.4.3. 范式与效率 二.MySQL介绍 2.1.MySQL概要 2.2.系统特性 2.3.存储引擎 三.快速安装运行MySQL数据库 3.1.使用绿色版 3.1.

Android下创建一个SQLite数据库

数据库:SQLite(轻量级,嵌入式的数据库) 大量的相似结构的数据的储存,快速的查询.特殊的文件(按照一定的格式生成) 数据库的创建 创建文件 1.声明文件对象,文件是不会被创建出来的. File file = new File("文件名称"); 2.写文件(文件才会被创建出来) FileOutputStream fos = new FileOutputStream(file); fos.write("hdahfdsaklfh".getbytes()); 创建数据

android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        四.配置Application        五.使用    GitHub 前言 我的上一篇博客讲的是简单的 android SQLite 数据库的基本操作如增删改查,有兴趣的朋友可以点一下这里android 简单SQLite数据库 增删改查 但是呢,一般的项目里,一个数据库也不会只有一个数据表,