设为首页 收藏本站
查看: 1579|回复: 0

[经验分享] Android入门:SQLite

[复制链接]

尚未签到

发表于 2016-11-29 06:26:15 | 显示全部楼层 |阅读模式


一、SQLite介绍


  SQLite是一个小型的内嵌于Android的数据库;我们不需要引入驱动即可访问它;
  SQLite可视化工具:SQLite Expert Professional 3;
  

二、Android访问SQLite


主要步骤:


(1)创建某个类继承SQLiteOpenHelper,并重写


-- 带Context参数的构造函数;//用来创建数据库
-- onCreate(SQLiteDatabase db);//在创建数据库时调用
-- onUpgrade(SQLiteDatabase db,int old,int newversion); //数据库版本更改时调用


(2)创建数据库:SQLiteDatabase db = helper.getWritableDatabase();


(3)SQL语句:db.execSQL(String sql);




具体模板代码如下:


package org.xiazdong.db.util;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class DatabaseHelper extends SQLiteOpenHelper{private static final String TAG = "DatabaseHelper";private static  int VERSION = 1;public DatabaseHelper(Context context) {super(context, "test.db", null, VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table 语句");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {Log.i(TAG, "版本更新...");}}

当创建数据库时,database存放在/data/data/package/databases 目录中;



1.打开数据库



SQLiteDatabase db = helper.getWritableDatabase();
SQLiteDatabase db = helper.getReadableDatabase();//此函数内部其实也调用了getWritableDatabase()函数,即调用了此函数,也可以写数据


2.insert语句


(1)db.execSQL("insert into person(name,age) values(?,?)",new Object[]{"xiazdong",20});
(2)
ContentValues values = new ContentValues();values.put("name","xiazdong");values.put("age",20);db.insert("tablename",null,values);

3.delete语句


(1)db.execSQL("delete from person where id=?",newObject[]{id});
(2)db.delete("tablename","id=?",new String[]{id+""});


4.update语句


(1)
db.exeSQL("update person set age=? where name=?",new Object[]{30,"xiazdong"});
(2)
ContentValues values = new ContentValues();values.put("age",30);/*set子句*/db.update("tablename",values,"name=?"/*where子句*/,new String[]{"xiazdong"}/*where子句参数*/);

5.query语句


(1)
Cursor cursor = db.rawQuery("select * from person where name=?",new Object[]{"xiazdong"});while(cursor.moveToNext()){//int index = cursor.getColumnIndex(String name);//根据name获得索引//String name = cursor.getString(int index);    //根据索引获得值String name = cursor.getString(cursor.getColumnIndex("name")); }

(2)
Cursor cursor = db.query("tablename",null/*表示select * */,"name=?"/*where语句*/,new String[]{"xiazdong"},null/*groupby 语句*/,null/*having 语句*/,null/*order by语句*/,null/*limit 语句*/);


6.分页语句


Cursor cursor = db.rawQuery("select * from person limit ?,?",new Object[]{5,5});  //第一个5表示跳过5条记录,下一个5为查询结果的记录个数
while(cursor.moveToNext()){
  String name = cursor.getString(cursor.getColumnIndex("name"));
}



7.获得记录个数语句


(1)
Cursor cursor = db.rawQuery("select count(*) from person", null);cursor.moveToFirst();int count = cursor.getInt(0);


(2)
db.query("person",new String[]{"count(*)"},null,null,null,null,null,null);


三、事务操作


模板代码如下:


db.beginTransaction();try{//事务操作db.setTransactionSuccessful();//此句必须要有,不然db.endTransaction()默认为回滚}finally{db.endTransaction();}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306790-1-1.html 上篇帖子: SQLite简单教程 下篇帖子: SQLite优化建议
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表