SQLite

为什么要用SQLite

1.SharedPreferences是以XML形式存储数据的,只适合存储基本数据类型的数据。
2.文件存储的内容在提取〈解析)数据时,相对复杂。
3.当数据量大结构复杂时,如果使用SharedPreferences和文件存储对的数据的操作变得非常复杂,容易出错,效率低下,Android中提
到的SQLite数据存储,帮助我们解决这些问题。

什么是SQLite

  1. SQLite数据库存储是Android系统提共的数据存储方式之一
  2. SQLite是专为嵌入式设备设计的一款轻量级数据库。
  3. SQLite占用资源非常低,在嵌入式设备中,只需要几百K的内存
  4. SQLite支持标准的SQL语法,遵循数据库的ACID事务。
  5. SQLite不需要安装,不需要用户名密码就可以使用。

如何创建数据库和数据表

使用SQLite创建数据库和表,首先要创建一个类继承SQLiteOpenHelper,并且实现它的方法

 private Context context;
    //sql建表语句
    private static final String TABLE_PRODUOT = "create table Student(" +
            "id integer primary key autoincrement," +
            "name text," +
            "age integer)";

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        //建表
        db.execSQL(TABLE_PRODUOT);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
  • 在Activity中创建数据库,onCreate()方法会在创建数据库的时候调用同时创建表
  • 第一个参数为上下文,第二个参数为数据库名,第三个参数为数据库的游标工厂,第四个参数为数据库的版本

SQLTest sql = new SQLTest(this, “Student.db”, null, 1);

获取一下数据库对象,以便下面使用

SQLiteDatabase db = sql.getWritableDatabase();

如何添加数据

private void insert() {
        String name = nameEdit.getText().toString();
        //获得SQLiteDatabase对象,读写模式
        sqldb = dbhelper.getWritableDatabase();
        //ContentValues类似HashMap,区别是ContentValues只能存简单数据类型,不能存对象
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", 20);
        values.put("gender", "男");
        //执行插入操作
        sqldb.insert(TABLE_NAME, null, values);
    }

如何删除数据

private void delete() {
        sqldb = dbhelper.getWritableDatabase();
        //第二个参数是WHERE语句(即执行条件,删除哪条数据)
        //第三个参数是WHERE语句中占位符(即"?"号)的填充值
        sqldb.delete(TABLE_NAME, "name=?", new String[]{"jack"});//删除name的值是jack的那条记录
    }

如何修改数据

private void modify() {
        SQLiteDatabase  sqldb = dbhelper.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put("name", "Jet");
        //第二个参数是修改的字段及修改的值(已经存放到ContentValues中)
        //第三个参数是WHERE语句
        //第四个参数是WHERE语句中占位符的填充值
        //如果第三四个参数为null,那就将每条记录都改掉
        sqldb.update(TABLE_NAME, values, null, null);
    }

如何查询数据

private void show() {
        //得到数据库对象
        sqldb = dbhelper.getReadableDatabase();
        //创建游标
        Cursor mCursor = sqldb.query(TABLE_NAME, new String[] { "id", "name", "age", "gender" }, "age>?", new String[]{"10"}, null, null,
                null);
        //游标置顶
        mCursor.moveToFirst();
        //遍历
        do{
            String name = mCursor.getString(mCursor.getColumnIndex("name"));
            System.out.println(name);
        }while(mCursor.moveToNext());
    }

你可能感兴趣的:(android)