SQLite数据库的增删改查

一、前言

这篇文章主要针对Android自带的轻量级数据库SQLite 实现增删改查。该数据库常用于本地数据的储存喝管理。例如,可以将用户信息,日志数据等重要信息存储在SQLite数据库中。

二、代码实现

1.创建MySqliteOpenHelp作为工具类


/**
 * MySqliteOpenHelp作为工具类  使用单例模式(1.构造函数私有化:不让外界访问。2.对外提供函数)
 */

public class MySqliteOpenHelper extends SQLiteOpenHelper {

    //2.对外界提供函数 单例模式
    private static SQLiteOpenHelper mInstance;
    public static synchronized SQLiteOpenHelper getInstance(Context context){
        if (mInstance == null){
            mInstance = new MySqliteOpenHelper(context,"AnglinDB",null,1);//想要数据库升级把1改为2
        }
        return mInstance;
    }

    //为什么要有含参构造函数,因为需要传给父类上下文,数据库名称,工厂,版本号等参数
    //第一步:构造函数私有化:不让外界访问
    private MySqliteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);//传给父类
    }

    //创建表   表数据初始化   数据库第一次创建的时候调用。第二次发现有了就不会重复创建了。也意味着:函数只执行一次。
    //数据库初始化
    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表 :person
        //主键:primary key必须唯一的
        //自动增长:例如 1,2,3,4,5  autoincrement
        //_id标准的写法(要求1)    只能使用:主键只能使用Integer类型的(要求2)
        //id 写法不标准
        String sql = "create table person(_id integer primary key autoincrement, name text)";

        db.execSQL(sql);
    }

    //数据库升级
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

2.实现数据库的增删改查

//SQLite增删改查
public class DBActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dbactivity);
    }

    /**
     * 生成DB文件
     *
     * @param view
     */
    public void createDB(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase readableDatabase = helper.getReadableDatabase();
    }

    /**
     * 查询
     *
     * @param view
     */
    public void query(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase db = helper.getReadableDatabase();

        if (db.isOpen()) {//确保数据库打开才能放心操作
            //返回游标
            Cursor cursor = db.rawQuery("select * from person", null);

            //迭代游标往下面移动来迭代数据
            while (cursor.moveToNext()) {
                @SuppressLint("Range")
                int _id = cursor.getInt(cursor.getColumnIndex("_id"));
                @SuppressLint("Range")
                String name = cursor.getString(cursor.getColumnIndex("name"));
                Log.d("Anglin", "query:_id " + _id +","+ "name:" + name);
            }
            //一定要记得关闭游标,否则会耗费性能
            cursor.close();
            //数据库也要关闭
            db.close();
        }

    }

    /**
     * 插入数据到数据库
     *
     * @param view
     */
    public void insert(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase db = helper.getWritableDatabase();
        if (db.isOpen()) {//确保数据库打开才能放心操作
            //插入语句
            String sql = "insert into person(name)values('Anglin')";
            db.execSQL(sql);
            //规范:必须关闭数据库
            db.close();
        }


    }

    /**
     * 修改第3条数据 为恭喜发财
     *
     * @param view
     */
    public void update(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase db = helper.getWritableDatabase();
        if (db.isOpen()) {//确保数据库打开才能放心操作
            //修改语句
            String sql = "update person set name =? where _id =?";
            db.execSQL(sql, new Object[]{"恭喜发财", 3});
            //规范:必须关闭数据库
            db.close();
        }

    }

    /**
     * 删除:第四条数据
     *
     * @param view
     */
    public void delete(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase db = helper.getWritableDatabase();
        if (db.isOpen()) {//确保数据库打开才能放心操作
            //修改语句
            String sql = "delete from person  where _id =?";
            db.execSQL(sql, new Object[]{4});
            //规范:必须关闭数据库
            db.close();
        }

    }
}

 页面布局




    

你可能感兴趣的:(Android,数据库,sqlite,android-studio)