我的编程空间,编程开发者的网络收藏夹
学习永远不晚

android SQLite数据库总结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

android SQLite数据库总结

SQLite

SQLite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准SQL语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用。

sql语法就不介绍了,直接看在android中的使用

SQLiteOpenHelper——封装好的数据库操作辅助类,需重写

重写方法

onCreate:初始化数据库,创建表,添加初始数据

onUpgrade:数据库版本升级时的数据库操作,如备份删除数据库等

常用方法

getReadableDatabase()    获取SQLiteDatabase对象,操作数据库

getWritableDatabase()        获取SQLiteDatabase对象,操作数据库

区别:在磁盘空间满或不可写时,1方法将获得只读的数据库对象,而2方法会报错,在正常情况下,获取到的都是可读写的数据库对象。


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
 private static final String name="my";//数据库名
 private static final int version=1;//版本号
 //重写构造方法的时候选择参数少的一项
 public DBHelper(Context context) {
  //1:上下文 2:数据库名称 3:游标创建工厂 4:数据库版本 版本只能是整数 1 2 3..
  super(context, name, null, version);
 }
 //数据库的初始化 SQLiteDatabase数据库操作对象
 //一般只在第一次运行和版本更新的时候调用
 @Override
 public void onCreate(SQLiteDatabase db) {
  //创建数据库 主键默认自增
  db.execSQL("create table student(" +
    "_id integer not null primary key autoincrement," +
    "name varchar(20)," +
    "phone varchar(11)," +
    "gender varchar(2))");
  //添加一条测试数据
  db.execSQL("insert into student values(null,?,?,?)"
    ,new Object[]{"小黑","12345678901","男"});
 }
 
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 }
}

在android数据库的创建是需要创建对象才能创建的

在activity类中创建出一个数据库类对象

创建好数据对象就可以操作数据了 通过SQLiteDatabase获取   两种获取方法的区别上面已经提到过了


     //创建数据
  DBHelper helper =new DBHelper(this);
  //调用数据操作对象
  SQLiteDatabase dbWrite=helper.getWritableDatabase();
  SQLiteDatabase dbRead=helper.getReadableDatabase();

SQLiteDatabase给我们提供了很多操作数据的方法 

删除:(int) delete(String table,String whereClause,String[] whereArgs) 

   table: 表名

   whereClause:where条件  列名 占位符  id=?

   whereArgs:参数值数组

添加:(long) insert(String table,String nullColumnHack,ContentValues values)  

    nullColumnHack:为空列

    ContentValues values:通过键值对存储添加的数据  key为列 value为值

    insert方法 底层是通过拼接字符串的方式 如果ContentValues是空的 拼接成的sql语句无法执行会报错 所以给一个可以为空的列当ContentValues为空时也可以执行 有兴趣的可以看一下源码

更新:(int) update(String table, ContentValues values, String whereClause, String[] whereArgs)

   参数意思同上

查询:(Cursor) query(boolean distinct,String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

    返回值是一个游标   这个query参数较多 简单的查询就还是写一条sql语句简单点

      boolean distinct 去重复

      String table 表名

      String[] columns要查询的列

      String selection查询条件

      String[] selectionArgs查询参数值

      String groupBy分组

      String having分组条件

      String orderBy排序

      String limit分页查询限制

关闭数据库:(void) close()

执行一条sql语句:(void) execSQL(String sql) 增删改查

查询查询sql:(Cursor) rawQuery(String sql, String[] selectionArgs)

事务


try {
   db.beginTransaction();//开启事务
   // db.update();
   // db.insert();
   db.setTransactionSuccessful(); //没有设置事物成功 finally就会回滚
  } catch (Exception e) {
   e.printStackTrace();
  }finally {
   db.endTransaction();
  }

贴代码咯  执行sql语句 和封装好的方法

查询


private void query() {
  StringBuffer sb=new StringBuffer("select * from student where 1=1");
  //参数集合
  List<String> params=new ArrayList<>();
  if(!TextUtils.isEmpty(id)){
   sb.append(" and _id=?");
   params.add(id);
  }
  if(!TextUtils.isEmpty(phone)){
   sb.append(" and phone=?");
   params.add(phone);
  }
  if(!TextUtils.isEmpty(name)){
   sb.append(" and name=?");
   params.add(name);
  }
  if(!TextUtils.isEmpty(gender)){
   sb.append(" and gender=?");
   params.add(gender);
  }
  SQLiteDatabase db=helper.getReadableDatabase();
  String [] projection=new String [params.size()];
  params.toArray(projection);
  //返回值 游标
  Cursor cursor=db.rawQuery(sb.toString(),projection);
    //判断游标是否为空,是否有一个值
  while(cursor!=null&&cursor.moveToNext()){
   // getColumnIndex获取列的下标 cursor.getXXXX()获取指定列的值
   String name=cursor.getString(cursor.getColumnIndex("name"));
   Integer id=cursor.getInt(cursor.getColumnIndex("_id"));
  }
 }

用不到的参数就让它为空吧   遍历数据就while循环就好咯

Cursor c = db.query("student",null,null,null,null,null,null);//查询并获得游标

更新


private void update() {
  StringBuffer sb=new StringBuffer("update student set ");
  List params=new ArrayList();
  if(!TextUtils.isEmpty(phone)){
   sb.append("phone=?,");
   params.add(phone);
  }
  if(!TextUtils.isEmpty(name)){
   sb.append("name=?,");
   params.add(name);
  }
  if(!TextUtils.isEmpty(gender)){
   sb.append("gender=?,");
   params.add(gender);
  }
  if (params.size()!=0){
   //更新操作拼接字符串末尾有一个","需要去除
   //删除最后一位的“,”
   sb.setLength(sb.length()-1);
   sb.append(" where 1=1");
   //通过id指定 更新那行数据
   if(!TextUtils.isEmpty(id)){
    sb.append(" and _id=?");
    params.add(id);
   }else{
    Toast.makeText(this,"请填写id",Toast.LENGTH_SHORT).show();
    return;
   }
   SQLiteDatabase db=helper.getWritableDatabase();
   Object [] o=new Object[params.size()];
   params.toArray(o);//将数据存放到指定的数组中
   db.execSQL(sb.toString(),o);
  }
 }

ContentValues cv = new ContentValues();//实例化ContentValues
cv.put("name","123");//添加要更改的字段及内容
String whereClause = "phone=?";//修改条件
String[] whereArgs = {"12312313213"};//修改条件的参数
db.update("student",cv,whereClause,whereArgs);//执行修改

删除


private void delete() {
  getAllText();
  //拼接sql语句
  StringBuffer sb=new StringBuffer("delete from student where 1=1");
  //保存参数的list
  List params=new ArrayList();
  //判断条件 动态拼接
  if(!TextUtils.isEmpty(id)){
   sb.append(" and _id=?");
   params.add(id);
  }
  if(!TextUtils.isEmpty(phone)){
   sb.append(" and phone=?");
   params.add(phone);
  }
  if(!TextUtils.isEmpty(name)){
   sb.append(" and name=?");
   params.add(name);
  }
  if(!TextUtils.isEmpty(gender)){
   sb.append(" and gender=?");
   params.add(gender);
  }
  SQLiteDatabase db=helper.getWritableDatabase();
  if (params.size()!=0){
   Object [] o=new Object[params.size()];
   params.toArray(o);//将数据存放到指定的数组中
   //执行删除
   db.execSQL(sb.toString(),o);
  }else{
   db.execSQL(sb.toString());
  }
  Toast.makeText(this,"删除完成",Toast.LENGTH_SHORT).show();
 }

String whereClause = "name=?";//删除的条件
String[] whereArgs = {"123"};//删除的条件参数
db.delete("student",whereClause,whereArgs);//执行删除

增加


private void insert() {//保存数据到object数组
  Object [] o=new Object[]{name,phone,gender};
  //获取数据库操作对象
  SQLiteDatabase db=helper.getWritableDatabase();
  //sql:sql语句 bingArgs:参数数组
  db.execSQL("insert into student values(null,?,?,?)",o);
  //关闭连接
  db.close();
  Toast.makeText(this,"增加成功",Toast.LENGTH_SHORT).show();
 }

ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据
cv.put("name","123"); 
db.insert("student",null,cv);//执行插入操作
您可能感兴趣的文章:Android编程之SQLite数据库操作方法详解Android SQLite事务处理结合Listview列表显示功能示例Android开发笔记SQLite优化记住密码功能Android利用listview控件操作SQLite数据库实例Android批量插入数据到SQLite数据库的方法Android SQLite数据库基本操作方法Android使用SQLite数据库的示例Android SQLite数据库版本升级的管理实现


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

android SQLite数据库总结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android SQLite数据库总结

SQLite SQLite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准SQL语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用。 sql语法就不介绍了,直接看在android中的使用
2022-06-06

Android中SQLite数据库小结

Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD
2022-06-06

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

/DATA/data/包名/databases是该程序存放数据的目录,DATA是Environment.getDataDirectory() 方法返回的路径。找到数据库之后可以选中user.db 执行导出。 用真机调试,data目录如果打不
2022-06-06

Android数据库之Sqlite

sqllie区别于我们以前接触的数据库,它是通过android自带的 方法来驱动数据库的建立:建立数据库表和操作数据库的大致过程:1.让一个类 去继承 SqliteOpenHelper (这是一个抽象类):重写该类的构造方法 ;实现未实现的
2022-06-06

Android SQLite数据库存储

前言:Android为了让我们更加方便的管理数据库,专门提供了SQLiteOpenHelper帮助类,借助这个类可以简单的对数据库进行创建和升级。 下面介绍一下SQLiteOpenHelper:(扩展知识) SQLiteOpenHelper
2022-06-06

Android之SQLite数据库使用

文章目录 简介关键类SQLiteOpenHelper创建数据库数据库操作insert增加数据update方法更新记录使用delete方法删除记录使用query方法查询记录 简介 SQLite是Android系统集成的一个轻量
2023-08-18

Android 安卓数据库 sqlite android自带数据库使用

Android 安卓数据库 Android是有自带的数据库的 原生数据库 public class MySQLiteHelper extends SQLiteOpenHelper {private static final String T
2022-06-06

Android怎么导入SQLite数据库

在Android中,可以通过以下步骤导入SQLite数据库:在项目的res目录下创建一个raw文件夹(如果没有的话)。将SQLite数据库文件(通常以.db或.sqlite为扩展名)复制到raw文件夹中。在SQLiteOpenHelpe
Android怎么导入SQLite数据库
2024-04-09

Android中的SQLite数据库简介

SQLite简介: SQLite是Android系统采用的一种开源的轻量级的关系型的数据库,Android中允许每个应用程序都拥有自己独立的数据库,每个应用程序的数据库的位置一般在/data/data//data
2022-06-06

Android 媒体库数据更新方法总结

Android 媒体库数据更新方法总结 在项目中,我们经常要创建个自己的目录,里面存放一些图片啊文件之类,比如:我在SD卡中刚创建了一个文件夹A,里面放入了照片B,那么,这个时候我立马去Gallery里面查看这个目录里的照片,那么,我是无法
2022-06-06

Android批量插入数据到SQLite数据库

Android中在sqlite插入数据的时候默认一条语句是一个事务,因此如果存在上万条数据插入的话,那需要执行上万次插入操作,操作速度可想而知。因此在Android中插入数据时,使用批量插入的方式可以大大提高插入速度。有时需要把一些数据内置
2022-06-06

数据仓库总结

1.为什么要做数仓建模 数据仓库建模的目标是通过建模的方法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点。 当有了适合业务和基础数据存储环境的模型(良好的数据模型),那么大数据就能获得以下好处: 当有了适合业务和基
2023-08-30

Android使用SQLite数据库的示例

一. 简介 SQLite数据库是一个轻量级的DBMS(数据库管理系统)。SQLite使用单个文件存储数据,Android标准库包含SQLite库以及配套使用的一些Java辅助类。主要特点:轻量级,单一文件,跨平台,开源。 二. Androi
2022-06-06

Android 开发中使用 SQLite 数据库

SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。对数熟悉 SQL 的开发人员来时,使用
2022-06-06

Android创建和使用数据库SQLIte

一、关系型数据库SQLIte 每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库—SQLite。SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量
2022-06-06

Android中如何使用SQLite数据库

在Android中使用SQLite数据库需要进行以下步骤:创建一个继承自SQLiteOpenHelper的帮助类来管理数据库的创建和版本更新:public class DBHelper extends SQLiteOpenHelper {p
Android中如何使用SQLite数据库
2024-04-09

详解Android轻量型数据库SQLite

数据库是Android存储方案的核心,在Andorid中SQLite非常轻量,而且执行sql语句甚至比MySQL还要快。 SQLiteDatabase 是 Android 中操作数据库的核心类之一,使用SQLiteDatabase可以打开
2022-06-06

Android SQLite数据库彻底掌握数据存储

SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录