Android中数据库的使用:sql
1.建立一个类,继承SQLiteOpenHelper,实现该类的构造方法 public XXX(Context context, String name, CursorFactory factory, int version) -->该构造方法能够只设置一个参数Context context,其他参数可在surper中肯定 public XXX(Context context, String name, CursorFactory factory, int version){ surper(context,name,factory,version); } -->改进以后 public XXXX(Context context){ surper(context,"xxx.db",null,1); } -->构造方法中参数的含义 context---上下文 name---数据库名称 factory---游标对象,默认为空 version---版本,从1开始的递增整数 2.建立好了类以后,重写onCreate()和onUpgrade()方法 -->onCreate()方法,在数据库第一次建立时调用,该方法主要用于表结构的建立。 因此,全部建表的sql语句,都在改方法中执行. db.execSQL("sql"); -->onUpgrade()方法,数据库版本号改变/修改表结构(增/删一个字段)调用 3.实例化XXX类,调用静态方法getReadableDatabase/getWritableDatabase,获得SQLiteDatabase对象 XXX xx = new XXX(context); SQLiteDatabase db = xx.getReadableDatabase(); ☆☆☆操做完db及时关闭数据库,减小内存消耗 db.close(); 4.进行增删改查操做 -->增长 long result = db.insert(String table, String nullColumnHack, ContentValues values); table:表名 nullColumnHack:默认为null,为null时表示插入一个空行 values:添加那条数据的值,底层由HashMap实现,values.put(key,value)实现数据的添加 result:返回添加成功后那一行的ID,-1添加失败 -->删除 int result = db.delete(String table, String whereClause, String[] whereArgs); whereArgs:判断条件,如"name=?" whereClause:判断条件的占位符,String[]类型 new String[]{"小王"} result:删除的行数 -->更新 相似删除,多一个value update(String table, ContentValues values, String whereClause, String[] whereArgs) value:存放要更新的信息 -->查询(Cursor游标对象) Cursor cursor = db.rawQuery(sql语句,查询条件) 返回cursor结果集 cursor.getCount()获取结果集的行数 cursor.moveToNext()判断是否有下一行内容,有返回true,无返回false; ☆☆☆cursor使用完后须要关闭,cursor.close(); 5.优化 避免每次操做数据库,都实例化一个XXX类,建立数据库的过程放在dao的构造函数中, ☆☆☆☆其中,获取SQLiteDatabase对象的方法不能放在构造函数中。由于,在构造函数中 只获取了一个SQLiteDatabase对象,而每次对数据进行不一样的操做后都关闭了数据库,在以 后的操做中,就没法得到SQLiteDatabase对象,从而致使对数据操做失败! -----------2016年10月14日22:10:07