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

[经验分享] android sqlite基础入门

[复制链接]

尚未签到

发表于 2016-11-29 09:39:20 | 显示全部楼层 |阅读模式
背景
  SQLite 是一个非常流行的嵌入式数据库,它提供了一个清爽的 SQL 接口,相当小的内存占用和高速的响应,更 Happy 的是他还是免费的,大家都可以尽情的使用,很多牛叉的公司(诸如 Adobe,Apple,Google,Sun,Symbian ),开源项目( Mozilla,PHP,Python )都在产品中装配 SQLite.
  Android 中, SQLite 是被集成于 Android runtime ,每个 Android 应用程序都可以欢快的使用 SQLite 数据库,如果你熟悉 JDBC ,那么这个过程就更安逸了。
SQLite3 特征
  和传统关系数据库比较
  有的:
  Sql 语句:  SELECT INSERT UPDATE
  CREATE DROP
  数据类型:
  不区分大小写
  TEXT  文本
  NUMERIC 数值
  INTEGER 整型
  REAL  小数
  NONE  无类型
  没有的:
  FOREIGN KEY 外键约束
  RIGHT OUTER JOIN 和 FULL OUTER JOIN
  ALTER TABLE
开始动手
  动手之前,确认你的机器中已经配置好如下环境:
  Android 开发环境(怎么配置问 Google ,有很多)
  本文档适用环境 Android1.0
  1, 建库
  方式一:命令行方式(适合调试用)
  可以使用 adb shell 进入设备后台,命令行方式手动创建,步骤如下:  
  Eclipse 中启动模拟器之后, cmd 下输入进入设备 Linux 控制台
  D:\>adb shell
  之后进入应用 data 目录
  # cd /data/data
  ls 列表目录,查看文件,找到你的项目目录并进入
  查看有无 databases 目录,如果没有,则创建一个
  # mkdir databases
  cd databases 进入并创建数据库
  # sqlite3 friends.db
  sqlite3 friends.db
  SQLite version 3.5.9
  Enter ".help" for instructions
  sqlite>
  ctrl+d 退出 sqlite 提示符 ls 列表目录会看到有一个文件被创建 friends.db
  他就是 SQLite 的库文件
  # ls
  ls
  friends.db
  方式二:编码方式(使用更多)
  android.content.Context 中提供了函数 , 注: Activity 是 Context 的子类
  openOrCreateDatabase () 来创建我们的数据库
  db = context .openOrCreateDatabase(
  String DATABASE_NAME , int Context. MODE_PRIVATE, null );
  String DATABASE_NAME 数据库的名字
   Int MODE 操作模式  Context.MODE_PRIVATE 等
   CursorFactory 指针工厂 ,本例中传入 null ,暂不用
  2, 建表
  命令行方式
  # sqlite3
  sqlite> create table widgets (id integer primary key autoincrement,name text);
  3, 插入数据
  命令行 增加,查询数据
  sqlite> insert into widgets values(null,'tom');
  insert into widgets values(null,'tom');
  sqlite> select * from widgets;
  select * from widgets;
  1|tom
  sqlite>
  API 方式

  • packageorg.imti;

  • importandroid.app.Activity;
  • importandroid.database.Cursor;
  • importandroid.os.Bundle;
  • importandroid.view.View;
  • importandroid.view.View.OnClickListener;
  • importandroid.widget.Button;
  • importandroid.widget.EditText;
  • importandroid.widget.TextView;

  • /**
  • *SQLiteDemo
  • *
  • *供Activity私有访问的数据库没有使用ContentProvider方式增加查询数据
  • *
  • *@authordaguangspecial@gmail.com
  • *
  • */
  • publicclassDbDemoextendsActivity{
  • EditTextinputTxt;
  • ButtonbtnAdd;
  • ButtonbtnViewAll;
  • TextViewviewAll;

  • DBHelperdb;

  • @Override
  • protectedvoidonCreate(BundlesavedInstanceState){
  • //TODOAuto-generatedmethodstub
  • super.onCreate(savedInstanceState);
  • this.setContentView(R.layout.dbdemo);
  • //初始化UI
  • btnAdd=(Button)findViewById(R.id.btnAdd);
  • btnViewAll=(Button)findViewById(R.id.btnViewAll);
  • viewAll=(TextView)findViewById(R.id.viewAll);
  • inputTxt=(EditText)findViewById(R.id.txtInput);
  • //初始化DB
  • db=newDBHelper(this);
  • //初始化监听
  • OnClickListenerlistener=newOnClickListener(){

  • publicvoidonClick(Viewv){
  • if(v.getId()==R.id.btnAdd){
  • //增加
  • db.save(inputTxt.getText().toString());
  • db.close();
  • }elseif(v.getId()==R.id.btnViewAll){
  • //浏览所有数据
  • Cursorcur=db.loadAll();
  • StringBuffersf=newStringBuffer();
  • cur.moveToFirst();
  • while(!cur.isAfterLast()){
  • sf.append(cur.getInt(0)).append(":").append(
  • cur.getString(1)).append("\n");
  • cur.moveToNext();
  • }
  • db.close();
  • viewAll.setText(sf.toString());
  • }
  • }
  • };
  • btnAdd.setOnClickListener(listener);
  • btnViewAll.setOnClickListener(listener);
  • }

  • }


  • packageorg.imti;

  • importandroid.content.Context;
  • importandroid.database.Cursor;
  • importandroid.database.sqlite.SQLiteDatabase;
  • importandroid.util.Log;

  • /**
  • *数据库操作工具类
  • *
  • *@authordaguangspecial@gmail.com
  • *
  • */
  • publicclassDBHelper{
  • privatestaticfinalStringTAG="DBDemo_DBHelper";//调试标签

  • privatestaticfinalStringDATABASE_NAME="dbdemo.db";//数据库名
  • SQLiteDatabasedb;
  • Contextcontext;//应用环境上下文Activity是其子类

  • DBHelper(Context_context){
  • context=_context;
  • //开启数据库

  • db=context.openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null);
  • CreateTable();
  • Log.v(TAG,"dbpath="+db.getPath());
  • }

  • /**
  • *建表
  • *列名区分大小写?
  • *都有什么数据类型?
  • *SQLite3
  • *TEXT文本
  • NUMERIC数值
  • INTEGER整型
  • REAL小数
  • NONE无类型
  • *查询可否发送select?
  • */
  • publicvoidCreateTable(){
  • try{
  • db.execSQL("CREATETABLEt_user("+
  • "_IDINTEGERPRIMARYKEYautoincrement,"
  • +"NAMETEXT"
  • +");");
  • Log.v(TAG,"CreateTablet_userok");
  • }catch(Exceptione){
  • Log.v(TAG,"CreateTablet_usererr,tableexists.");
  • }
  • }
  • /**
  • *增加数据
  • *@paramid
  • *@paramuname
  • *@return
  • */
  • publicbooleansave(Stringuname){
  • Stringsql="";
  • try{
  • sql="insertintot_uservalues(null,'"+uname+"')";
  • db.execSQL(sql);
  • Log.v(TAG,"insertTablet_userok");
  • returntrue;

  • }catch(Exceptione){
  • Log.v(TAG,"insertTablet_usererr,sql:"+sql);
  • returnfalse;
  • }
  • }
  • /**
  • *查询所有记录
  • *
  • *@returnCursor指向结果记录的指针,类似于JDBC的ResultSet
  • */
  • publicCursorloadAll(){

  • Cursorcur=db.query("t_user",newString[]{"_ID","NAME"},null,null,null,null,null);

  • returncur;
  • }
  • publicvoidclose(){
  • db.close();
  • }
  • }

运维网声明 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-307034-1-1.html 上篇帖子: SQLITE的C++调用示例 下篇帖子: iPhone实战:操作SQLite(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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