Android 数据存储与读取:SQLite
16lz
2021-01-23
在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。
下面介绍的基本使用:
是一个抽象类不能直接实例化,所以新建一个类DBOpenHelper继承自SQLiteOpenHelper :
[java] view plain copy print ?
- publicclassDBOpenHelperextendsSQLiteOpenHelper{
- publicDBOpenHelper(Contextcontext){
- super(context,"yhn.db",null,1);
- }
- //数据库第一次创建时候调用,
- publicvoidonCreate(SQLiteDatabasedb){
- db.execSQL("createtableuser(uidintegerprimarykeyautoincrement,unamevarchar(20),uaddressvarchar(20))");
- }
- //数据库文件版本号发生变化时调用
- publicvoidonUpgrade(SQLiteDatabasearg0,intarg1,intarg2){
- }
如果执行上边的代码,则会创建一个数据库文件xx.db
数据库操作类:
[java] view plain copy print ?
- publicclassDBDao{
- DBOpenHelperdbOpenHelper;
- publicDBDao(Contextcontext){
- this.dbOpenHelper=newDBOpenHelper(context);
- }
- /**
- *添加一条数据
- *@paramuser
- */
- publicvoidsave(Useruser){
- SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
- db.execSQL("insertintouser(uname,uaddress)values(?,?)",newObject[]{user.getUname(),user.getUaddress()});
- db.close();
- }
- /**
- *删除一条数据
- *@paramuid
- */
- publicvoiddelete(Integeruid){
- SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
- db.execSQL("deletefromuserwhereuid=?",newObject[]{uid});
- db.close();
- }
- /**
- *更新一条数据
- *@paramuser
- */
- publicvoidupdate(Useruser){
- SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
- db.execSQL("updateusersetuname=?,uaddress=?whereuid=?",newObject[]{user.getUname(),user.getUaddress(),user.getUid()});
- db.close();
- }
- /**
- *查找一条数据
- *@paramuid
- */
- publicUserfind(Integeruid){
- SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
- Cursorcursor=db.rawQuery("select*fromuserwhereuid=?",newString[]{uid.toString()});
- if(cursor.moveToFirst()){
- intuid2=cursor.getInt(cursor.getColumnIndex("uid"));
- Stringuname=cursor.getString(cursor.getColumnIndex("uname"));
- Stringuaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
- Useruser=newUser();
- user.setUid(uid2);
- user.setUname(uname);
- user.setUaddress(uaddress);
- returnuser;
- }
- cursor.close();
- returnnull;
- }
- /**
- *分页查找数据
- *@paramoffset跳过多少条数据
- *@parammaxResult每页多少条数据
- *@return
- */
- publicList<User>getScrollData(intoffset,intmaxResult){
- List<User>users=newArrayList<User>();
- SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
- Cursorcursor=db.rawQuery("select*fromuserorderbyuidasclimit?,?",newString[]{String.valueOf(offset),String.valueOf(maxResult)});
- while(cursor.moveToNext()){
- intuid2=cursor.getInt(cursor.getColumnIndex("uid"));
- Stringuname=cursor.getString(cursor.getColumnIndex("uname"));
- Stringuaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
- Useruser=newUser();
- user.setUid(uid2);
- user.setUname(uname);
- user.setUaddress(uaddress);
- users.add(user);
- }
- returnusers;
- }
- /**
- *获取数据总数
- *@return
- */
- publiclonggetCount(){
- SQLiteDatabasedb=dbOpenHelper.getReadableDatabase();
- Cursorcursor=db.rawQuery("selectcount(*)fromuser",null);
- cursor.moveToFirst();
- longreslut=cursor.getLong(0);
- returnreslut;
- }
- }
示例:向数据库中添加一条数据
[java] view plain copy print ?
- DBDaodbDao=newDBDao(this);
- Useruser=newUser();
- user.setUname("qixiaohu");
- user.setUaddress("chengdu");
- dbDao.save(user);
PC上管理SQLite数据库的方法:
上边添加数据后可以看到数据添加成功:
更多相关文章
- Android怎么让RadioButton图片居中显示
- android点击按钮控制图片切换-kotlin
- android 触摸手指动作放大和缩小图片
- Android联系人数据库全
- Android存储数据到本地文件
- android 数据存取——SharedPreferences
- Android 调用系统相册选择图片并显示
- android自带图片资源
- Android 图片倒影效果源码