SQLiteOpenHelper的使用:

      首先声明一个DatabaseHelper类,这个类继承于SQLiteOpenHelper类,首先得有构造函数,声明DatabaseHelper类如下:

    //DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能
    //第一,getReadableDatabase(),getWriteableDatabase()可以获得SQLiteDatabase对象,通过该对象对数据库进行操作
    //第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作
    public class DatabaseHelper extends SQLiteOpenHelper{
      //在SQLiteOpenHelper的子类当中,必须有该构造函数
      //context为一个Activity对象,name表的名字,version数据库的版本
      private static final int VERSION = 1;
      public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
      }
      public DatabaseHelper(Context context,String name){
        //调用含三个参数的构造函数,即下一个自定义的构造函数
        this(context,name,VERSION);
      }
      public DatabaseHelper(Context context,String name,int version){
        //调用系统的构造函数,只不过给factory传入的值为空
        this(context,name,null,version);
      }
      //该函数是在第一次创建数据库的时候执行,实际上是第一次得到SQLiteDatabase对象的时候,才会调用该方法
      @Override
      public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        //execSQL函数用于执行SQL语句
        db.execSQL("create table user(id int,name varchar(20))");
        //Log.d("myDebug", "My first Debug");
      }

      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
      }

    }

  如下定义了增删改查SQLite数据库的按钮的监听事件:

    class SQLButtonListener implements OnClickListener{

      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        if(v.getId() == R.id.createDatabase){
          //创建数据库,首次调用则执行onCreate方法
          DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db");
          SQLiteDatabase db = dbHelper.getReadableDatabase();
        }
        else if(v.getId() == R.id.updataDatabase){
          //更新当前数据库的版本号
          DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
        }
        else if(v.getId() == R.id.insertDatabase){    //插入按钮
          //生成ContentValue对象
          ContentValues values = new ContentValues();
          //向该对象中插入键值对,其中键是列名,值是希望插入的这一列的值,值必须与数据库的列的类型一致
          values.put("id", 1);
          values.put("name", "zhangsan");
          DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
          SQLiteDatabase db = dbHelper.getWritableDatabase();
          //调用insert方法,就可以将数据插入到数据库当中
          db.insert("user", null, values);
        }
        else if(v.getId() == R.id.updatatable){    //更新按钮
          //UPDATE table_name set XXCOL=xxx WHERE XXCOL=XX
          DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
          SQLiteDatabase db = dbHelper.getWritableDatabase();
          ContentValues values = new ContentValues();
          values.put("name", "zhangsanfeng");
          //第一个参数是更新的表名,第二个参数是一个ContentValues对象,第三个参数是where子句,?表示占位符,?有几个后面             的new String中就有几个参数
          db.update("user", values, "id=?", new String[]{("1")});
        }
        else if(v.getId() ==R.id.queryDatabase){      //查询按钮
          DatabaseHelper dbHelper = new DatabaseHelper(OtherActivity.this,"test_zhanglei_db",2);
          SQLiteDatabase db = dbHelper.getReadableDatabase();

          //表名,查询列名,where之后的子句,selection的参数,分组(groupby),分组的限制(Having),结果的排序(OrderBy)
          Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
          while(cursor.moveToNext()){
            //getString(1)中的参数是表中的列名
            String name = cursor.getString(cursor.getColumnIndex("name"));
            textView.setText(textView.getText()+name);
          }
        }
      }
    }

SQLite关系型数据库的更多相关文章

  1. Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase

    数据库的创建,获取,执行sql语句: 框架搭建:dao 思考: 1.数据库保存在哪里? 2.如何创建数据库?如何创建表? 3.如何更新数据库?如何更改表的列数据? 4.如何获取数据库? 5.如何修改数 ...

  2. SQLite vs MySQL vs PostgreSQL:关系型数据库比较

    自1970年埃德加·科德提出关系模型之后,关系型数据库便开始出现,经过了40多年的演化,如今的关系型数据库种类繁多,功能强大,使用广泛.面对如此之多的关系型数据库,我们应该如何权衡找出适合自己应用场景 ...

  3. Python信息采集器使用轻量级关系型数据库SQLite

    1,引言Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.SQLite作为后端数据库,可以搭配Python建网站,或者为python网络爬虫存储数据.SQLite还在其它 ...

  4. SQLite -- 嵌入式关系型数据库

    SQLite -- 嵌入式关系型数据库 1.SQLite的数据类型:Typelessness(无类型) 1,能够保存不论什么类型的数据到表的随意列中 2.支持常见的类型如: NULL, VARCHAR ...

  5. 非关系型数据库(NoSql)

    最近了解了一点非关系型数据库,刚刚接触,觉得这是一个很好的方向,对于大数据 方面的处理,非关系型数据库能起到至关重要的地位.这里我主要是整理了一些前辈的经验,仅供参考. 关系型数据库的特点 1.关系型 ...

  6. android: SQLite创建数据库

    SQLite 是一款轻量级的关系型数据库,它的运算速度非常快, 占用资源很少,通常只需要几百 K 的内存就足够了,因而特别适合在移动设备上使用.SQLite 不仅支持标准的 SQL 语法,还遵循了数据 ...

  7. (转)Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解

    原文:http://blog.csdn.net/lidew521/article/details/8655229 1.SQLite介绍:最大特点是,无数据类型;除了可以使用文件或SharedPrefe ...

  8. 关系型数据库工作原理-时间复杂度(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

  9. 关系型数据库工作原理-事务管理(二)(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

随机推荐

  1. STL之deque

    deque是一种优化了的,对序列两段进行添加和删除操作的基本序列容器.它允许较为快速的随机访问,但它不像vector把所有对象保存在一块连续的内存块,而是采用多个连续的存储块.向deque两段添加或删 ...

  2. SQL服务器在执行这条语句时会先进行运算然后执行

    1.打开地址,我们可以看到是一个正常的页面. 2..然后在地址后面加上-1,变成:http://site/news.asp?id=123-1,若返回的页面和前面不同,是另一个正常的页面,则表示存在注入 ...

  3. 四则运算项目git统计

    GitHub统计 1.Git文档目录 图 1文档结构预览 2.Git提交进度图 图 2 9月12日-10月3日 图 3 10月3日-10月14日 图 4 10月14日-10月21日 图 5 10月21 ...

  4. for 循环中 continue

  5. C#_闭包陷阱

    如果匿名方法(Lambda表达式)引用了某个局部变量,编译器就会自动将该引用提升到该闭包对象中. 即将for循环中的变量i修改成了引用闭包对象的公共变量i.这样一来,即使代码执行后离开了原局部变量i的 ...

  6. 小知识 安卓线程和ui

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  7. ABP框架理论学习之后台工作(Jobs)和后台工作者(Workers)

    返回总目录 本篇目录 介绍 后台工作 后台工作者 让你的应用程序一直运行 介绍 ABP提供了后台工作和后台工作者,它们会在应用程序的后台线程中执行一些任务. 后台工作 后台工作以队列和持续的方式在后台 ...

  8. 【腾讯Bugly干货分享】美团大众点评 Hybrid 化建设

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/rNGD6SotKoO8frmxIU8-xw 本期 T ...

  9. CSS3 特效分解一

    先声明下,下面的特效不是我发明的,对CSS3的创造力还不够,只是看了别人demo的源码,一点一点分析出来的.整理出的笔记,分享给大家.因为源码是好,但是一头扎进去半天出不来. 首先看个登陆框,如下,相 ...

  10. AutoMapper使用手册(一)

    阅读目录 1. 介绍 2. 基本使用 3. 自动分割映射(Flattening) 4. 自定义字段映射(Projection) 5. 验证配置(Configuration validation) 介绍 ...