您的当前位置:首页正文

安卓入门--Sqlite安卓中数据库的增删查改

2024-11-07 来源:个人技术集锦

androidSqlite的增删查改


package com.qfeng.sqlite2;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.qfeng.sqlite.MyOpenhelper;

/**
 * 
 * @author sKy° 
 * SqliteManager类的创建和使用 
 * 该类主要是封装了操作数据库的增 删 查 改方法 目的方便使用和提高效率
 * 使用的时候直接实例化调用里面方法即可!
 * @d2016-5-26
 */
public class SqliteManager {
    private MyOpenhelper openhelper;

    /**
     * 1.设置带一个参数构造
     * 定义SqliteManager的带参构造,传入Context用于调用
     * 构造里面实例化该类意于被调用的时候就实例化MyOpenhelper
     * 并设为全局变量后面方法都会用到(初始化类在上一篇详细介绍了该类就不说了)
     * @param context
     */
    public SqliteManager(Context context) {
        openhelper = new MyOpenhelper(context);
    }


    /**
     * 2.增 
     * db.insert(table, nullColumnHack, values);
     * 第一个参数: table-->表名
     * 第二个参数: nullColumnHack-->空列的默认值
     * 第三个参数:values-->ContentValues类型的一个封装了列名称和列值的Map
     * 清楚每个参数含义之后,写该方法就好办了,对于增,我们只需要传入值就搞定!
     * 用boolean的意于在调用时候可以进行判断是-否,让代码更严谨
     */
    public boolean insert(ContentValues values) {
        boolean flag = false;
        SQLiteDatabase db = null;
        try {
            //该方法是要对数据进行‘写’的一个操作所以用witeableDatabase
            db = openhelper.getWritableDatabase();
            long rows = db.insert("Students", null, values);
            //查阅API可以发现这里的true是当rows!=-1所以直接返回这个即可
            flag = (rows != -1);
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            //一定记得关闭database和关闭流意思相同
            if (db != null) {
                db.close();
            }
        }

        return flag;
    }

    /**
     * 3.删
     * db.delete(table, whereClause, whereArgs)
     * 第一个参数:table-->表名
     * 第二个参数:whereClause-->删除条件语句
     * 第三个参数:whereArgs--->删除条件的数组值
     * 弄清参数后,该方法就好写了只需设定 删除条件(name=?或者id=?) 
     * 然后根据输入获取到whereArgs(值) 
     */
    public boolean delete(String whereClause, String[] whereArgs) {
        boolean flag = false;

        SQLiteDatabase db = null;
        try {   
            //该方法是要对数据进行‘写’的一个操作所以用witeableDatabase
            db = openhelper.getWritableDatabase();
            int delete = db.delete("Students", whereClause, whereArgs);
            //查阅API可以发现这里的true是当delete>0 所以直接返回这个即可
            flag = delete > 0;
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            //database记得关闭!
            if (db != null) {
                db.close();
            }
        }

        return flag;
    }
    /**
     * 4.改
     * db.update(table, values, whereClause, whereArgs)
     * 第一个参数-->表名
     * 第二个参数-->修改的值是一个ContentValues类型的一个封装了列名称和列值的Map
     * 第三个参数-->修改条件
     * 第四个参数-->修改条件数组值
     * 清楚参数后,使用该方法只需传入要更新的内容(values) 
     * 根据什么来更新(name=?/id=?/age=?都行,开心就好)
     * whereClause 更新字段的值 name=韩梅梅 /id=1/age=18,都可以!
     */
    public boolean updata(ContentValues values, String whereClause,
            String[] whereArgs) {
        boolean flag = false;
        SQLiteDatabase db = null;
        try {
            //该方法是要对数据进行‘写’的一个操作所以用witeableDatabase
            db = openhelper.getWritableDatabase();
            int update = db.update("Students", values, whereClause, whereArgs);
            flag = update > 0;
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            //记得关闭 重要事情说三遍!
            if (db != null) {
                db.close();
            }
        }

        return flag;
    }
    /**
     * 5.查
     * db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy)
     * 最讨厌要传这么长的参数了 shit!
     * 第一个参数-->表名
     * 第二个参数-->String[] columns 列名称数组null
     * 第三个参数-->selection 查询条件  根据什么来查(例:name=?/id=?/age=?)都可以
     * 第四个参数-->selectionArgs 查询条件数组值  获得输入的name值、id值、age值都可以
     * 第五个参数-->groupBy:分组列
     * 第六个参数-->having:分组条件
     * 第七个参数-->orderBy:排序列
     * 后面五、六、七正常情况下都是null null null 不用管
     * 清楚参数好办了,但是要注意返回值是一个Cursor游标 理解为指针就好,我们就通过他去数据库一条一条的查询的
     * 后面三个参数不用管,这里的需要传入三个参数即可 column 可以为null,selection查询条件 selectionArgs查询条件数组值
     * @return
     */
    public Cursor select(String[] columns, String selection,
            String[] selectionArgs) {
        Cursor cursor = null;
        //!!!注意这里,因为我们查询方法只是对数据库进行一个‘写’的操作所以这里用getReadableDatabase()即可
        SQLiteDatabase db = openhelper.getReadableDatabase();
        cursor = db.query("Students", columns, selection, selectionArgs, null,
                null, null);

        return cursor;
    }

}

(对Sqlite类的增删查改并封装为一个方法的Dao类就写到这里,下篇写调用该类的方法实现增删查改并写一个小APP实现,理解不深刻,有需要改进的希望留言,就到这里了,开心就好—sKy)

Top