数据库的创建与使用(CRUD)

简介: 本文用到SQLite数据库一款轻量级数据库使用是继承于SQLiteOpenHelper抽象类首先创建一个Helper(自定义)类用于继承SQLiteOpenHelper抽象类public class Helper extends SQLiteOpenHelper然后他有三个必须实现的方法


本文用到SQLite数据库一款轻量级数据库

使用是继承于SQLiteOpenHelper抽象类

首先创建一个Helper(自定义)类用于继承SQLiteOpenHelper抽象类

public class Helper extends SQLiteOpenHelper

然后他有三个必须实现的方法


public class Helper extends SQLiteOpenHelper {
    public static final String TableName = "ToDoList";//表名
    public static final String ID = "ID";
    public static final String Content = "Content";
    private static final String DataBase = "todolist.db";//数据库名
    private static final SQLiteDatabase.CursorFactory Factory = null;//游标
    public static final int version = 1;//版本号
    public Helper(@Nullable Context context) {
        super(context, DataBase, Factory, version);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 操作数据库,建表
        String sql = "create table " + TableName + "("+ID+" varchar(20) primary key, "+Content+" varchar(20));";
        db.execSQL(sql);
    }
   //用于新版本和就版本有所差异时,用于更新数据库
   //比如新版本需求更大,需要加一个金钱的列进去,然后可以在此函数当作进行添加
   //此并没有实现旧与新的迭代
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists "+TableName);
        onCreate(db);
    }
}

创一个DAO类用于执行CRUD

public class Dao {
    public static final String TAG = "DataBase";
    private Helper helper ;
    private SQLiteDatabase DB;
    public Dao(Context context)
    {
        helper = new Helper(context);
    }
    public void Insert(DataBase dataBase){
        DB = helper.getReadableDatabase();
        if (DB.isOpen())
        {
            ContentValues values = new ContentValues();
            values.put(Helper.ID,dataBase.getId());
            values.put(Helper.Content,dataBase.getContent());
            long RowId = DB.insert(Helper.TableName,null,values);
            if(RowId == -1)
                Log.i(TAG, "数据插入失败!");
            else
                Log.i(TAG, "数据插入成功!"+RowId);
        }
    }
    //根据序号删除数据
    //当前id为暂不为序号
    public void Delete(String id){
        DB = helper.getReadableDatabase();
        if (DB.isOpen()){
            String whereClause = "ID = ?";
            String[] whereArgs = {id + ""};
            int count = DB.delete(Helper.TableName, whereClause, whereArgs);
            if (count > 0)
                Log.i(TAG, "删除了: " + count + "行");
            else
                Log.i("todolist", "数据未删除!");
            DB.close(); // 数据库关闭
        }
    }
    public void Update(String id ,String Content){
        DB = helper.getWritableDatabase();
        if(DB.isOpen()) {   // 如果数据库打开, 执行添加的操作
            ContentValues values = new ContentValues();
            values.put("ID",id);
            values.put("Content", Content);
            int count  = DB.update(Helper.TableName, values, "_ID = ?", new String[]{id + ""});
            if (count > 0)
                Log.i(TAG, "修改了: " + count + "行");
            else
                Log.i("todolist", "数据未删除!");
            DB.close(); // 数据库关闭
        }
    }
    public String Query(String id){
        DB = helper.getReadableDatabase();
        //selection查询子句的条件,可以使用主键查询
        String[] columns = {"ID", "Content"};  // 需要的列
        String selection = "ID = ?";
        String[] selectionArgs = {id + ""};
        Cursor cursor = DB.query(Helper.TableName,columns,selection,selectionArgs,null,null,null);
        if (cursor.moveToFirst())
        {
            if(cursor != null && cursor.moveToFirst()) {
                //String _id = cursor.getString(0);
                String Content = cursor.getString(1);
                DB.close();
                return Content;
            }
            cursor.close();
            DB.close();
        }
        return null;
    }
    public List<DataBase> QueryAll() {
        DB = helper.getReadableDatabase();  // 获得一个只读的数据库对象
        if(DB.isOpen()) {
            String[] columns = {"ID", "Content"};  // 需要的列
            String selection = null;    // 选择条件, 给null查询所有
            String[] selectionArgs = null;  // 选择条件的参数, 会把选择条件中的? 替换成数据中的值
            String groupBy = null;  // 分组语句  group by name
            String having = null;   // 过滤语句
            String orderBy = null;  // 排序
            Cursor cursor = DB.query(Helper.TableName, columns, selection, selectionArgs, groupBy, having, orderBy);
            String id;
            String Content;
            if(cursor != null && cursor.getCount() > 0) {
                List<DataBase> DataBaseList = new ArrayList<DataBase>();
                while(cursor.moveToNext()) {    // 向下移一位, 知道最后一位, 不可以往下移动了, 停止.
                    id = cursor.getString(0);
                    Content = cursor.getString(1);
                    DataBaseList.add(new DataBase(id, Content));
                }
                DB.close();
                return DataBaseList;
            }
            DB.close();
        }
        return null;
    }
}

然后在需要引用的地方引用就没有了

比如在Mainacticity中

首先实例Dao类

Dao  dao = new Dao(MainActivity.this);
 dao.QueryAll();//其他功能均可以实现


如果要查看数据库中的内容

可以采用IDEA在sqlite查看

如果有其他软件,先把数据库文件保存到桌面然后使用其他软件查看

image.png

image.png

相关文章
|
6月前
|
前端开发 关系型数据库 数据库
使用 Flask 连接数据库和用户登录功能进行数据库的CRUD
使用 Flask 连接数据库和用户登录功能进行数据库的CRUD
138 0
|
JavaScript 前端开发 Java
LayUI之CRUD(增删改查功能实现)项目案例
LayUI之CRUD(增删改查功能实现)项目案例
84 0
|
存储 JSON 前端开发
LayUI之CRUD(增删改查)
LayUI之CRUD(增删改查)
126 0
|
存储 前端开发 JavaScript
Layui的CRUD(增删改查)
Layui的CRUD(增删改查)
103 0
|
前端开发 JavaScript API
Layui的CRUD(增删改查)
Layui的CRUD(增删改查)
107 0
|
前端开发 数据管理 数据库
Layui之CRUD(增删改查)
Layui之CRUD(增删改查)
46 0
|
1月前
|
数据可视化 API PHP
学生信息管理系统-可视化-科目管理CRUD代码生成器
学生信息管理系统-可视化-科目管理CRUD代码生成器
40 5
|
2月前
|
前端开发 IDE 数据库连接
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
本文详细介绍了ThinkPHP6中模型层的使用,包括模型属性设置、表映射关系、以及如何在控制层中使用模型层进行CRUD操作。
ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
|
3月前
|
API Python
[gin]基于切片实现crud
[gin]基于切片实现crud
|
3月前
|
前端开发 Java 关系型数据库
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
226 0