SQLite关系型数据库

  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);
          }
        }
      }
    }

时间: 2024-10-12 18:31:46

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

数据缓存——SQLite关系型数据库的使用

SQLite关系型数据库的使用 Demo下载地址 数据库(Database): 存放数据的仓库, 存放的是一张的表, 特别像Excel, Numbers, 都以表格的形式存放数据, 可以创建多张表. 常见的数据库: sqlite, MySQL, SQLServer, Oracle, Access. 使用数据库,主要是因为文件读写和归档读取数据需要一次把数据全部读出来, 占用内存开销大:其次是数据库数据效率高, 体现在增删改查. 数据库存储数据的步骤 1.新建一个数据库 2.新建一张表(table

SQLite关系型数据库的使用

数据库(Database): 存放数据的仓库, 存放的是一张的表, 特别像Excel, Numbers, 都以表格的形式存放数据, 可以创建多张表. 常见的数据库: sqlite, MySQL, SQLServer, Oracle, Access. 使用数据库,主要是因为文件读写和归档读取数据需要一次把数据全部读出来, 占用内存开销大:其次是数据库数据效率高, 体现在增删改查. 数据库存储数据的步骤 1.新建一个数据库 2.新建一张表(table) 3.添加多个字段(column,列,属性) 4

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

数据库的创建,获取,执行sql语句: 框架搭建:dao 思考: 1.数据库保存在哪里? 2.如何创建数据库?如何创建表? 3.如何更新数据库?如何更改表的列数据? 4.如何获取数据库? 5.如何修改数据库中的表的数据? 框架思想 思考:如何使得编程更加简单? 一个sql语言,容易写错: 1.使用占位符: 2.框架解析重建法:搭建框架,对增删改查功能进行单独封装,传入容器对象即可: 思考: 1.数据库保存在哪里? data/data/包名/databases/xiaoo.db 2.如何创建数据库?

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

SQLite -- 嵌入式关系型数据库 1.SQLite的数据类型:Typelessness(无类型) 1,能够保存不论什么类型的数据到表的随意列中 2.支持常见的类型如: NULL, VARCHAR, TEXT, INTEGER, BLOB, CLOB等 3,唯一的例外:integer primary key 此字段仅仅能存储64位整数,即当主键被定义为integer时仅仅能存储64位整数 注意:SQLite数据库中列一旦创建不能改动,假设一定要改动,须要又一次创建表,拷贝数据 2,Andro

android开发之 SQLite(数据库)

SQLite数据库存储:SQLite是一款轻量级的关系型数据库,它的运算速度非常快, 占用资源很少,通常只需要几百 K的内存就足够了,因而特别适合在移动设备上使用. 第一: 创建一个数据库.(Android为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮 助类,借助这个类就可以非常简单地对数据库进行创建和升级.) SQLiteOpenHelper是一个抽象类,这意味着如果我们想要使用它的话, 就需要创建一个自己的帮助类去继承它.SQLiteOpenHelpe

关系型数据库与NoSQL的对比

SQL(结构化的查询语言)数据库是过去四十年间存储数据的主要方式.20世纪90年代末随着Web应用和MySQL.PostgreSQL和SQLite等开源数据库的兴起,用户爆炸式的增长. NoSQL数据库自从20世纪60年代就已经存在了,直到MongoDB, CouchDB, Redis 和 Apache Cassandra等数据库的流行才获取了更多的关注. 你可以很容易地找到许多关于如何使用一款特定的SQL或NoSQL的教程,但是很少有讨论你为什么优先的使用一款而不适用另一款.我希望我能够填补这

Linux安装SQLite轻量级数据库

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口,同样比起Mysql.PostgreSQL这两款开源的世界著名数据库管理

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

本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies 本文翻译了如下章节: 一. 前言 谈到关系型数据库,我想不到有什么东西能缺少它,可以说关系型数据已经无处不在.存在各种不同的关系型数据库:从轻量有用的SQLite到功能强悍的数据仓库. 但是,这只是一篇介绍关系型数据库工作原

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

本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies 紧接上一篇文章,本文翻译了如下章节: 一. Log manager(日志管理) 通过前面的章节,我们已经知道,为了提升性能,数据库会将数据缓存在内存中.但是,如果在事务提交过程中,数据库服务器崩溃了.缓存在内存的数据就会丢失