android中SQLite使用及特点

1.SQLite的特点

  • SQLite是一个轻量级数据库,它设计目标是嵌入式的,而且占用资源非常低
  • SQLite没有服务器进程,通过文件保存数据,该文件是跨平台的
  • 支持null,integer,real,text,blob五种数据类型,实际上SQLite也接受varchar,char,decimal等数据类型,只不过在运算中或保存时会转换成对应的5种数据类型,因此,可以将各种类型数据保存到任何字段中

2.SQLite的使用

2.1数据库的创建

在android中,创建SQLite数据库非常简单。Android系统推荐使用SQLiteOpenHelper的子类创建数据库,因此需要创建一个类继承自SQLiteOpenHelper,并重写该类的onCreateonUpgrade方法即可

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

    /**
     * 作为SQLiteOpenHelper子类必须有的构造方法
     * @param context 上下文参数
     * @param name 数据库名字
     * @param factory 游标工厂 ,通常是null
     * @param version 数据库的版本
     */
    public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    /**
     * 数据库第一次被创建时调用该方法
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 初始化数据库的表结构,执行一条建表的SQL语句
        db.execSQL("create table user(u_id int not null primary key,u_name varchar(50) not null,age int)");
    }

    /**
     * 当数据库的版本号增加调用
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

2.2新增(insert)

 public void insert(String name,int age){
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        // 创建ContentValue设置参数
        ContentValues contentValues=new ContentValues();
        contentValues.put("name",name);
        contentValues.put("age",age);
        // 插入数据
        // insert方法参数1:要插入的表名
        // insert方法参数2:如果发现将要插入的行为空时,会将这个列名的值设为null
        // insert方法参数3:contentValue
        long i=db.insert("user",null ,contentValues);

        // 释放连接
        db.close();
    }

2.3修改(update)

 public void update(String name,int age){
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db=dbHelper.getWritableDatabase();
        // 创建ContentValue设置参数
        ContentValues contentValues=new ContentValues();
        contentValues.put("age",age);
        // 修改数据
        // 参数1:tablename
        // 参数2:修改的值
        // 参数3:修改的条件(SQL where语句)
        // 参数4:表示whereClause语句中的表达式的占位符参数列表,这些字符串会替换where条件中?
        db.update("user",contentValues,"name=?",new String[]{name});

        // 释放连接
        db.close();
    }

2.4删除(delete)

 public void delete(long id) {
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 参数1:tablename
        // 参数2:删除的条件(SQL语句)
        // 参数3:给修改的条件注入参数,一个或多个
        db.delete("user", "u_id=?", new String[]{id + ""});
        // 释放连接
        db.close();
    }

2.5查询(query)

 public void query() {
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 参数1:table_name
        // 参数2:columns 要查询出来的列名。相当于 select  *** from table语句中的 ***部分
        // 参数3:selection 查询条件字句,在条件子句允许使用占位符“?”表示条件值
        // 参数4:selectionArgs :对应于 selection参数 占位符的值
        // 参数5:groupby 相当于 select *** from table where && group by ... 语句中 ... 的部分
        // 参数6:having 相当于 select *** from table where && group by ...having %%% 语句中 %%% 的部分
        // 参数7:orderBy :相当于 select  ***from ??  where&& group by ...having %%% order by@@语句中的@@ 部分,如: personid desc(按person 降序)
        Cursor cursor = db.query("user", null, null, null, null, null, null);

        // 将游标移到开头
        cursor.moveToFirst();

        while (!cursor.isAfterLast()) { // 游标只要不是在最后一行之后,就一直循环

             int id=cursor.getInt(0);
             String name=cursor.getString(1);

             // 将游标移到下一行
             cursor.moveToNext();

        }

        db.close();
    }

3.使用SQL语句进行数据库操作

// 通过DBHelper类获取一个读写的SQLiteDatabase对象
SQLiteDatabase db = dbHelper.getWritableDatabase();

 // insert
db.execSQL("insert into user (id,name,age) values (?,?,?)",new Object[]{1,"张三",18});
// update
db.execSQL("update user set name=? where id=?",new Object[]{"张三",1});
// delete
db.execSQL("delete from user where id=1");
// query
Cursor cursor = db.rawQuery("select * from user where id=?", new String[]{"1"});

4.SQLite事务

SQLite数据库同样支持事务

事务操作后一定要使用endTransaction()方法关闭事务,当执行到endTransaction()时,首先会检查是否有事务执行成功标记,有则提交数据库,无则回滚数据

	DBHelper dbHelper = new DBHelper(MainActivity.this, "test.db", null, 0);
        // 通过DBHelper类获取一个读写的SQLiteDatabase对象
        SQLiteDatabase db = dbHelper.getWritableDatabase();

        // 开始事务
        db.beginTransaction();
        try {

            // 标记数据库事务执行成功
            db.setTransactionSuccessful();
        }catch (Exception e){
            Log.i("事务处理失败",e.getMessage());
        }finally {
            db.endTransaction(); //关闭事务
            db.close(); // 关闭数据库
        }

到此这篇关于android中SQLite使用及特点的文章就介绍到这了,更多相关android使用SQLite内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android创建和使用数据库SQLIte

    一.关系型数据库SQLIte         每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库-SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的. SQLite

  • 实例讲解Android App使用自带的SQLite数据库的基本方法

    SQLite数据库是android系统内嵌的数据库,小巧强大,能够满足大多数SQL语句的处理工作,而SQLite数据库仅仅是个文件而已.虽然SQLite的有点很多,但并不是如同PC端的mysql般强大,而且android系统中不允许通过JDBC操作远程数据库,所以只能通过webservice等手段于php.servlet交互获取数据. 基础 SQLiteDatabase类,代表了一个数据库对象,通过SQLiteDatabase来操作管理数据库. 一些基本的用法: static  SQLiteDa

  • Android Studio 通过登录功能介绍SQLite数据库的使用流程

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

  • Android开发中使用sqlite实现新闻收藏和取消收藏的功能

    之前学习oracle,简单的认为数据库只存在服务器端,学习安卓之后才发现原来android和Ios本身是"携带"数据库的--SQLite,是轻量级的.嵌入式的.关系型数据库,是Android.IOS等广泛使用的的数据库系统.用于存储本地的一直状态.刚写出来一个实现新闻收藏的功能,写出来供大家参考. 在Android中我们通过SQLiteDatabase这个类的对象操作SQLite数据库.由于SQLite数据库并不需要像C/S数据库那样建立连接以及身份验证的特性,以及SQLite数据库单

  • Android App使用SQLite数据库的一些要点总结

    /DATA/data/包名/databases是该程序存放数据的目录,DATA是Environment.getDataDirectory() 方法返回的路径.找到数据库之后可以选中user.db 执行导出. 用真机调试,data目录如果打不开,说明你的手机没有root,改用模拟器就OK了. 1.获取SQLiteDatabase对象: SQLiteDatabase db = openOrCreateDatabase(File file, SQLiteDatabase.Cursor, Factory

  • Android使用SQLite数据库的简单实例

    先画个图,了解下Android下数据库操作的简单流程: 1.首先,写一个自己的数据库操作帮助类,这个类继承自Android自带的SQLiteOpenHelper. 2.在自己的DAO层借助自己的Helper写数据库操作的一些方法 3.Activity调用DAO层的数据库操作方法进行操作 下面例子是: 1.Helper 复制代码 代码如下: package cn.learn.db.util; import android.content.Context;import android.databas

  • 实例讲解Android中SQLiteDatabase使用方法

    SQLite数据库是android系统内嵌的数据库,小巧强大,能够满足大多数SQL语句的处理工作,而SQLite数据库仅仅是个文件而已.虽然SQLite的有点很多,但并不是如同PC端的mysql般强大,而且android系统中不允许通过JDBC操作远程数据库,所以只能通过webservice等手段于php.servlet交互获取数据. SQLiteDatabase类,代表了一个数据库对象,通过SQLiteDatabase来操作管理数据库. 一些基本的用法:   static  SQLiteDat

  • Android中SQLite 使用方法详解

    Android中SQLite 使用方法详解 现在的主流移动设备像android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧.对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取. 下面就向大家介绍一下SQLite常用的操作方法,为了方便,我将代码写在了Activity的onCreate中: @Ov

  • android中SQLite使用及特点

    1.SQLite的特点 SQLite是一个轻量级数据库,它设计目标是嵌入式的,而且占用资源非常低 SQLite没有服务器进程,通过文件保存数据,该文件是跨平台的 支持null,integer,real,text,blob五种数据类型,实际上SQLite也接受varchar,char,decimal等数据类型,只不过在运算中或保存时会转换成对应的5种数据类型,因此,可以将各种类型数据保存到任何字段中 2.SQLite的使用 2.1数据库的创建 在android中,创建SQLite数据库非常简单.A

  • Android 中SQLite技术实例详解

    Android和iOS的数据库都是用SQLite来实现. 一,SQLite数据库简介: 轻量级:SQLite数据库是一个轻量级的数据库,适用于少量数据的CURD; 文件本质:SQLite数据库支持大部分SQL语法,允许使用SQL语句操作数据库,其本质是一个文件,不需要安装启动. 数据读写:SQLite数据库打开只是一个文件的读写流. 二.简单的数据库语句知识 在android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持NULL,INTEGER,REAL(浮点数字),TE

  • Android中SQLite数据库知识点总结

    SQLite 数据库简介 SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本.它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需要占用几百kB的存储空间,这也是Android移动设备采用SQLite数据库的重要原因之一. SQLite 是遵守ACID的关系型数据库管理系统.这里的ACID是指数据库事务正确执行的4个基本要素,即原子性(Atomicity).致性 ( Consistency). 隔离性( lolation).

  • android中sqlite的按条件查找的小例子

    name      hobby Tom        football Peter       basketball 我们如果要查找爱好是football的一行数据怎么办呢?在网上找了很多方法,感觉都说不到点子上,所以浪费了很多时间,好在终于解决了,解决方法如下 [java] 复制代码 代码如下: Cursor mcursor=mSQLiteDatabase.query(tableName, new String[]{"id as _id","name","

  • Android使用SQLite数据库的示例

    一. 简介 SQLite数据库是一个轻量级的DBMS(数据库管理系统).SQLite使用单个文件存储数据,Android标准库包含SQLite库以及配套使用的一些Java辅助类.主要特点:轻量级,单一文件,跨平台,开源. 二. Android中SQLite数据库的使用 1.创建SQLite数据库 SQLiteDatabase db= SQLiteDatabase.openOrCreateDatabase( "/data/data/" + getPackageName() + "

  • 详解Android中一些SQLite的增删改查操作

    在Android开发中经常要涉及到对数据的操作.Android本身提供了四种数据存储方式.包括:SharePreference,SQLite,Content Provider,File. 在Android,数据都是么私有的,要实现数据共享,正确方式是使用Content Provider. SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式.Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API. Sha

  • Android中的SQLite数据库简介

    SQLite简介: SQLite是Android系统采用的一种开源的轻量级的关系型的数据库,Android中允许每个应用程序都拥有自己独立的数据库,每个应用程序的数据库的位置一般在/data/data/<package_name>/databases中.为了方便开发人员的使用,Android的API对增删查改实现了封装,通过SQLiteOpenHelper类可以方便的实现对数据库的创建和管理操作.不过正式的使用数据库之前,我们还要知道两个基本知识点. Content Values 和Curso

  • 实例讲解Android中ContentProvider组件的使用方法

    ContentProvider基本使用 为了在应用程序之间交换数据,android提供了ContentProvider,ContentProvider是不同应用程序之间进行数据交换的标准API,当一个应用程序需要把自己的数据暴露给其他程序使用时,该应用程序就可以通过提供ContentPRovider来实现,其他应用程序就可以通过ContentResolver来操作ContentProvider暴露的数据. 实现ContentProvider的步骤: 1)编写一个类,继承ContentProvid

  • Android中自定义ContentProvider实例

    //以下为TestBaidu MainActivity如下: 复制代码 代码如下: package cn.testbaidu; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import an

随机推荐