Android SQLite 开发教程(4): 读写数据库操作

安卓通过SQLite实现登录注册功能(小白式教程) 安卓通过SQLlite实现登录注册功能 前面基本操作看图片 第一个xml文件是:round_bg.xml,后面界面布局要用到 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/colorPrimary"/> <c 阅读详情

有了数据库对象之后,可以使用execSQL 提供SQL语言来添加,删除,修改或查询数据库。除了通用的execSQL 之外,SQLiteDatabase 提供了 insert, update, delete ,query 方法来简化数据库的添加,删除,修改或查询操作。

此外SQLite不强制检测数据库的数据类型,通过DBAdapter 可以使用强数据类型来修改,删除数据等,这也是使用DBAdapter的一个好处:

这里我们先定义了一个TodoItem 类,表示一个Todo 项:

public class TodoItem {
 
 private String mTask;
 
 private Date mCreated;
 
 public String getTask(){
 return mTask;
 }
 
 public Date getCreated(){
 return mCreated;
 }
 
 public TodoItem(String task){
 this(task,new Date(System.currentTimeMillis()));
 }
 
 public TodoItem(String task,Date created){
 mTask=task;
 mCreated=created;
 }
 
 @Override
 public String toString(){
 SimpleDateFormat sdf=new SimpleDateFormat("dd/mm/yy");
 String dateString= sdf.format(mCreated);
 return "("+ dateString+ ")" + mTask;
 }
 
}


下面的方法提供使用TodoItem类型做参数使用添加,删除和修改TodoItem

//insert a new task
public long insertTask(TodoItem task){
 ContentValues newTaskValues=new ContentValues();
 //assign values for each row
 newTaskValues.put(KEY_TASK, task.getTask());
 newTaskValues.put(KEY_CREATION_DATE, task.getCreated().getTime());
 
 //insert row
 return mDb.insert(DATABASE_TABLE,null,newTaskValues);
}
 
public boolean removeTask(long rowIndex){
 return mDb.delete(DATABASE_TABLE,KEY_ID+"="+rowIndex, null)>0;
}
 
public boolean updateTask(long rowIndex,String task){
 ContentValues newValue=new ContentValues();
 newValue.put(KEY_TASK, task);
 return mDb.update(DATABASE_TABLE, newValue,
 KEY_ID+"="+rowIndex, null)>0;
}

其中ContentValues 定义了列名到列值的映射,类似于Hashtable。

SQLiteDatabase 的Query方法的一个定义如下:

public Cursorquery(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

  • table : 数据库名称
  • columns: 需要返回的列名称,
  • selection: 查询条件,为WHERE语句(不含WHERE)。
  • selectionArgs: 如果selection 中带有? ,这里可以给出? 的替代值。
  • groupBy: Group 语句除去GROUP BY。
  • having: Having语句除去Having
  • OrderBy: Order by 语句。

下面代码给出查询某个todoItem 项:

public Cursor getAllToDoItemsCursor(){
 return mDb.query(DATABASE_TABLE,
 new String[]{KEY_ID,KEY_TASK,KEY_CREATION_DATE},
 null, null, null, null, null);
}
 
public Cursor setCursorToToDoItem(long rowIndex)
 throws SQLException {
 Cursor result=mDb.query(DATABASE_TABLE,
 new String[]{KEY_ID,KEY_TASK},
 KEY_ID+"="+rowIndex, null, null, null, null);
 if(result.getCount()==0 || !result.moveToFirst()){
 throw new SQLException ("No to do item found for row:"
 + rowIndex);
 }
 return result;
}
 
public TodoItem getToDoItem(long rowIndex)
 throws SQLException {
 Cursor cursor=mDb.query(DATABASE_TABLE,
 new String[]{KEY_ID,KEY_TASK,KEY_CREATION_DATE},
 KEY_ID+"="+rowIndex, null, null, null, null);
 if(cursor.getCount()==0 || !cursor.moveToFirst()){
 throw new SQLException ("No to do item found for row:"
 + rowIndex);
 }
 String task=cursor.getString(TASK_COLUMN);
 long created=cursor.getLong(CREATION_DATE_COLUMN);
 TodoItem result=new TodoItem(task,new Date(created));
 return result;
 
}

Query方法还有几个重载的方法,具体可以参见Android文档


 

 

Android——SQLite数据库使用详解,安卓开发面试基础 设置按钮边框填充颜色 阅读详情

相关推荐

Android开发之SQLite

Android开发学习笔记。学习SQLite的使用方法,包括:SQL语句、数据库管理器、数据库帮助器。Data Definition Language,描述了怎样变更数据实体的框架结构。创建表格表格的创建动作由create命令完成NOT NULL,SQLite的SQL语句需要注意:SQL语句中的关键字不区分大小写,被单引号括起来的字符串区分大小写;SQLite不支持布尔值;建表时需要唯一标识字段,字段名为_id,创建新表都要加上该字段定义。删除表格表格的删除动作由drop命令完成。

u013054484的博客 1743

Android简单SQLite数据库读写

  MySQLiteOpenHelper.java: import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.support.annotation.Nullable...

Zhang Phil 5264

【极简代码】Godot Mono版的C#脚本实现对SQLite数据库的读写及对安卓端的兼容

【代码】【极简代码】Godot Mono版的C#脚本实现对SQLite数据库的读写及对安卓端的兼容。

qq_39889893的博客 1938

Android数据库SQLite的读写

adb命令 sqlite3可以操作数据库:数据库存放在app的目录里面,要先进入/data,或者/data/data,查找app的目录,再进入databases目录,然后再执行: sqlite3 数据库文件名 sqlite>.modecolum 修改一下查询结果的显示模式 sqlite>.headeron 这条命令是打开首行显示字段名的功能 sqlite命令下执行.dbinfo,其中user version这一项是这个db的版本号(由程序员写入)。 剩下的,就看你对...

徘徊的风 1147

基于Android的SQLite数据库操作

求赞 基于Android的SQLite数据库操作功能介绍一、创库二、基本操作1.实例化sql对象2.添加数据2.查询数据3.修改数据4.删除数据 功能介绍 本文的增删改查方法都Android自带的SQLiteOpenHelper,虽然直接用sql语句来映射相应的数据库操作比较直观且便于管理,但是学习总是一条漫长的过程。。。。。 相关文章: Android 开发之 Sqlite数据库操作 Android Cursor(光标)解析 android query方法各个参数的含义 一、创库 引入SQLit.

weixin_45880583的博客 3626

Android - SQLite(数据库读写)

▷ SQLite SQLite原生操作 Activity中操作数据库 将App与db文件打包发布 <一> SQLite原生操作 .schema [表名] 查看建表完整语句(默认查看所有表的创建语句) .table 查看数据库中的所有表 [ SQL语句 ] 1> 建表 sqlite> create t...

⚡ 523

安卓加载mysql数据到列表里_android读取sqlite数据库的数据并用listview显示

刚刚接触android,老师给了我了几个班级信息的excel,让我做一个考勤的系统出来,本篇仅记录了真机调试下,读取已有数据库信息并显示在listview中。准备工作开发工具为Android Studio。sqlite可视化软件SQLite Expert Professional 5已将excel表转化为的数据库 student1.db。在AS中创建assets文件夹并将db文件拷贝进去。创建实体...

weixin_39692271的博客 1270

android读取sqlite数据库的数据并用listview显示

一个android读取sqlite数据库的数据并用listview显示demo,如有问题及时提醒。

基于Sqlite数据开发的安卓简易通讯录

基于Sqlite数据开发的安卓简易通讯录 开发环境 Android Studio集成开发环境,下载,安装教程及无法联网更新问题,请转至:Android Studio下载安装教程 进入主题 效果图 目录结构 废话不多说,直接上代码 ...

qq_38937025的博客 4540

Android 读写文件,读写数据库(SQLite)

1.对读写文件操作的练习 2.对SQLite读写数据库的操作练习。 3.对ListView的练习 4.代码清楚,层次明了。 android sdk 2.3.*

【数字图像相关-OpenCorr学习笔记】Epipolar search原理+代码解析

OpenCorr是一个开源C++库,用于研究和开发数字图像相关(DIC)技术它提供了2D和立体声DIC的全功能模块,以及数字体积相关(DVC)。最近正在学习OpenCorr,为了更深层次地理解ICGN,我打算浅浅剖析Opencorr的代码,学习的过程中写下这篇学习笔记,以后忘记了还能回来看看。同时,作为一名在读研究生,希望能得到社区大佬的指点,以及跟同学们一起学习进步。这一期主要讲解Eipipolar search的原理,并且附上部分代码解析。

ywyywyy的博客 1359

安卓开发能用mysql吗_在安卓开发中使用SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了。在Android 运行时环境包含了完整的 SQLite。首先介绍一下SQLite这个数据库:SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持W...

weixin_31869917的博客 1271

二阶锥松弛在配电网最优潮流计算中的应用(IEEE33节点配电网最优潮流算例matlab程序)(yalmip+cplex)

文献[7]建立了以支路潮流计算为基础的OPF模型,针对OPF中的非凸性约束,采用SOCR技术将其松弛为二阶锥约束,整个 OPF 模型则被转化为二阶锥规划( Second Order Cone Programming,SOCP)问题,对其求解可以得到全局最优解。其次结合辐射型配电网潮流特点建立支路潮流约束,并考虑配电网中的可控单元,包括分布式电源和离散、连续无功补偿装置,建立其出力约束,该模型为非凸非线性模型;式中,αj,t和βij,t分别为t时段内节点i电压的二次方和支路ij电流的二次方。

weixin_47365903的博客 1万+

安卓开发工程师-SQLite 数据库操作

在 SQLite 中,表结构通过 SQL 的语句定义。例如,假设我们有一个用户表User_id:主键,自增name:用户姓名age:用户年龄。

qq_62784677的博客 1186

vue2/3 - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

vue扫描二维码条形码,vue网页调用摄像头扫二维码条形码,vue移动端如何实现调用相机扫描二维码,vue移动端扫一扫功能,vue怎么做移动端h5扫一扫功能,vue识别二维码和条形码,vue实现点击按钮调用摄像头扫码,vue调用本地摄像头实现拍照功能,Vue中如何进行二维码生成与扫描,如何实现vue在手机浏览器中调用摄像头实现扫描二维码功能,VUE项目移动端H5调用摄像头扫码,vue项目中实现H5调取摄像头,网页调用摄像头实现二维码扫描功能,vue调用手机摄像头,vue在调用摄像头扫码,vue自定义打开摄像

✅ 精选推荐文章 1万+

UG NX二次开发(C#)--详细讲述编程模板NXOpen_CS_Wizard的代码意义,帮你轻松进入NXOpen(C#)二次开发

有几个读者私信问我,在看了“NX1957在VS2019上二次开发的环境配置”后,能完成了UG NX二次开发(C#)模板的配置,也能根据模板创建工程,但是对工程文件.cs不甚理解;并且,在UG Styler新建完成后,其也有一个dlx文件和.cs文件,也不清楚怎么使用。本文先对UG NX二次开发(C#)模板文件进行讲解,在下一个博客中,讲解Styler新建后的模板文件。以上就是对编程模板NXOpen_CS_Wizard(c#)的讲解,其实只要明白了逻辑关系,编程实现只是时间问题,祝你好运。

GimiGimmy 1788
上一篇: 如何使Android应用开机时自动启动
下一篇: Android测试教程(9):ApplicationTestCase示例
引路蜂
博客等级 码龄16年 3122粉丝 711原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值