Android SQLite数据库使用示例

支持的 数据类型有 null,integer,float,double,long,text,char ,varchar,date,time,timestamp(时间戳)等等

char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的

参考点击打开链接


继承 SQLiteOpenHelper

//如果数据库文件不存在,只有onCreate()被调用(该方法在创建数据库时被调用一次)。
// 如果数据库文件存在,且创建SQLiteOpenHelper 对象指定版本高于已有版本时,
// 会调用onUpgrade()方法升级数据库,并更新版本号。
public class DataBaseHelper extends SQLiteOpenHelper {
    private Context context;
    private String name;//数据库名字
    private static final int VERSION = 1;

    public DataBaseHelper(Context context, String name) {
        this(context, name, VERSION);
    }

    public DataBaseHelper(Context context, String name,
                          int version) {
        this(context, name, null, version);
    }

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

    //SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据
    @Override
    public void onCreate(SQLiteDatabase db) {
        //execSQL用于执行SQL语句
        //if not exists,如果不存在就创建
        //id integer primary key autoincrement,id 主键自增长
        //user(id integer primary key autoincrement,name varchar(20)),表名字段类型
        db.execSQL("create table if not exists " +
                "user(id integer primary key autoincrement,name varchar(20),age integer)");
    }

    //三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}



//sqlite 使用
    private void sqlite() {
        DataBaseHelper dataBaseHelper = new DataBaseHelper(this, "text1");
        SQLiteDatabase db = dataBaseHelper.getWritableDatabase();
        doInsert(db);
        doDelete(db);
        doUpdate(db);
        doQuery(db);

    }

    private void doInsert(SQLiteDatabase db) {
        //插入 数据,null代表id自增长
        db.execSQL("insert into person values(null, ?)",
                new Object[]{"小明"});
        //另一种 方式
        ContentValues values = new ContentValues();
        values.put("name", "小明");
        //第一个参数是表名,
        // 第二个参数通常都用不到,直接传null,
        // 第三个参数则是一个封装了待存储数据的
        long id = db.insert("person", null, values);
    }

    private void doDelete(SQLiteDatabase db) {
        //删除数据
        db.execSQL("delete from person where age=?",
                new Object[]{""});
        //另一种 方式
        db.delete("person", "age=?", new String[]{null});
    }

    private void doUpdate(SQLiteDatabase db) {
        //修改数据
        db.execSQL("update person set name=小米 where id=2");
        //另一种 方式
        ContentValues contentValues = new ContentValues();
        contentValues.put("name", "小米");
        db.update("person", contentValues,
                "id=?", new String[]{"2"});
    }

    private void doQuery(SQLiteDatabase db) {
        //android 中通过query获取cursor进行查询
        //获取查询游标
        Cursor cursor = db.query("person",
                new String[]{"id", "sname", "sage", "ssex"}, "id=?",
                new String[]{"1"}, null, null, null);
        while (cursor.moveToNext()) {
            String name = cursor.getString(cursor.getColumnIndex("name"));
            String age = cursor.getString(cursor.getColumnIndex("age"));
        }
        //关闭 查询游标
        cursor.close();
    }


你可能感兴趣的:(Android SQLite数据库使用示例)