SQLite使用

第一步

定义类继承SQLiteOpenHelper 重写几个方法
public class SQLiteTool extends SQLiteOpenHelper{
    /**
     * 自己写个构造方法  创建这个类是只要使用自己的即可
     * @param context
     */
    public SQLiteTool(Context context){
        super(context,Constant.DATABASE_NAME,null,Constant.DATABASE_VERSION);
    }
    /**
     *
     * @param context 上下文对象
     * @param name 数据库名称
     * @param factory 工厂 null
     * @param version 当前版本  要求大于等于1
     */
    public SQLiteTool(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    /**
     * 当数据库创建回调的函数
     * @param db 数据库对象
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.i("zy","crete");
        String sql="create table "+Constant.TABLE_NAME+"("+Constant._ID+" Integer primary key,"+Constant.NAME+" varchar(10),"+Constant.AGE+" Integer)";
        db.execSQL(sql);//执行语句

    }

    /**
     * 更新
     * @param db 数据库对象
     * @param oldVersion 旧版本
     * @param newVersion 新版本
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    /**
     * 数据库打开回调
     *
     * @param db
     */
    @Override
    public void onOpen(SQLiteDatabase db) {
        super.onOpen(db);
        Log.i("zy","open");
    }

第二步

自定义一个关于数据库字段的常量类
/**
 * 数据库常量
 */
public class Constant {
    public static final String DATABASE_NAME="info.db";//数据库名称
    public static final int DATABASE_VERSION=1;//数据库版本
    public static final String TABLE_NAME="person";//表名
    public static final String _ID="_id";
    public static final String NAME="name";
    public static final String AGE="age";
}

第三步

定义一个数据库工具类 使用单例模式 自定义两个方法
public class DbManager {
    private static SQLiteTool helper;

    /**
     * 建立数据表
     * @param context
     * @return
     */
    public static SQLiteTool getIntance(Context context){

        if (helper==null){
            helper=new SQLiteTool(context);//获取对象
        }
        return helper;
    }

    /**
     * 执行数据
     * @param db   SQLiteDatabase db=helper.getWritableDatabase() 是否为空
     * @param sql  数据库语句
     */
    public static void execSql(SQLiteDatabase db,String sql){
        if (db!=null){
            if (sql!=null &&!"".equals(sql)){
                db.execSQL(sql);
            }
        }
    }
}

第四步 — 使用两种方式操作数据库

布局 写数据库代码

exxcSQL(SQL) 操作数据库

 /**
     * 使用 exxcSQL(SQL) 操作数据库
     * @param view
     */
    public void click(View view){
        switch (view.getId()){
            case R.id.insert:
                /**
                 *创建数据或打开数据库 已创建会直接打开
                 */
                SQLiteDatabase db=helper.getWritableDatabase();
                String sql="insert into "+Constant.TABLE_NAME+" values(1,'张三',20)";
                DbManager.execSql(db,sql);
                String sql2="insert into "+Constant.TABLE_NAME+" values(2,'李四',25)";
                DbManager.execSql(db,sql2);
                break;
            case R.id.update:
                db=helper.getWritableDatabase();
                String updateSql="update"+Constant.TABLE_NAME+" set "+Constant.NAME+"='小明' where"+Constant._ID+"=1";
                DbManager.execSql(db,updateSql);
                db.close();
                break;
            case R.id.delete:
                db=helper.getWritableDatabase();
                String delsql="delete from "+Constant.TABLE_NAME+" where "+Constant._ID+"=2";
                DbManager.execSql(db,delsql);
                db.close();
                break;
        }
    }


方法二 - - - - - 使用api进行sqlite数据库操作
    /**
     * 使用api进行sqlite数据库操作  江布局按钮onClick设置 onclick
     * @param view
     */
    public void onclick(View view){
        switch (view.getId()){
            case R.id.apiInsertdate:
                SQLiteDatabase db=helper.getWritableDatabase();
                /**
                 * insert(String table, String nullColumnHack, ContentValues values)
                 * String table  表名
                 * String nullColumnHack  为空nul
                 * ContentValues values   HashMap的集合
                 * 返回值 long 表示插入数据的列表
                 */
                ContentValues contentValues=new ContentValues();
                //put 参数  参数名  数据
                contentValues.put(Constant._ID,3);
                contentValues.put(Constant.NAME,"王五");
                contentValues.put(Constant.AGE,30);
                long result=db.insert(Constant.TABLE_NAME,null,contentValues);
                if (result>0){
                    Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
                }
                db.close();
                break;
            case R.id.apiUpdate:
                db=helper.getWritableDatabase();
                /**
                 * String table, ContentValues values, String whereClause, String[] whereArgs
                 * table  表名
                 *
                 * values hashmap
                 *
                 * whereClause  修改条件
                 *
                 * whereArgs  表示条件的占位符
                 *
                 * return int 判断修改条数
                 */
                ContentValues values=new ContentValues();
                /**
                 * 修改的字段  修改值
                 */
                values.put(Constant.NAME,"王八");
                /**
                 * 第一种是将要改的字段直接赋值
                 */
//                int count=db.update(Constant.TABLE_NAME,values,Constant._ID+"=3",null);
                /**
                 * 第二种是先给字段占位,然后在 whereArgs中传入要修的值
                 */
                int count=db.update(Constant.TABLE_NAME,values,Constant._ID+"=?",new String[]{"3"});//修改 id 为 3的值

                if (count>0){
                    Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
                }
                db.close();
                break;
            case R.id.apidelete:
                db=helper.getWritableDatabase();

                /**
                 * String table, String whereClause, String[] whereArgs
                 *
                 * table 表名
                 *
                 * whereClause  删除条件
                 *
                 *
                 * whereArgs 占位符
                 */

                int count2=db.delete(Constant.TABLE_NAME,Constant._ID+"=?",new String[]{"3"});
                if (count2>0){
                    Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(MainActivity.this, "删除失败", Toast.LENGTH_SHORT).show();
                }
                db.close();
                break;
        }
    }

Demo下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值