Android入门(十一)SQLite CURD
原文链接:http://www.orlion.ga/594/
一、添加数据
SQLiteOpenHelper的getReadableDatabase()或getWritableDatabase()方法是可以用于创建和升级数据库的, 不仅如此, 这两个方法还都会返回一个SQLiteDatabase对象,借助这个对象就可以对数据进行 CRUD操作了。
SQLiteDatabase中提供了一个insert()方法,它接收三个参数,第一个是表名,第二个参数用于在未指定添加数据的情况下给某些可为空的列自动赋值NULL,一般我们用不到这个功能,直接传入null即可。第三个参数是一个ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可。
首先修改activity_main.xml添加一个按钮,然后修改MainActivity.java:
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbHelper = new MyDatabaseHelper(this , "BookStore.db" , null , 2);Button button = (Button) findViewById(R.id.create_database);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dbHelper.getWritableDatabase();}});Button addData = (Button) findViewById(R.id.add_data);addData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("name", "Book");values.put("author" , "orlion");values.put("pages", 9);values.put("price", 15.1);db.insert("book", null, values);values.clear();values.put("name", "Book2");values.put("author", "orlion");values.put("pages", 9);values.put("price" , 15.1);db.insert("book", null, values);}});}
在添加数据按钮的点击事件里面,我们先获取到了 SQLiteDatabase 对象,然后使用ContentValues来对要添加的数据进行组装。 如果你比较细心的话应该会发现, 这里只对 book表里其中四列的数据进行了组装,id那一列没并没给它赋值。这是因为在前面创建表的时候我们就将 id列设置为自增长了,它的值会在入库的时候自动生成,所以不需要手动给它赋值了。 接下来调用了 insert()方法将数据添加到表当中, 注意这里我们实际上添加了两条数据,上述代码中使用 ContentValues分别组装了两次不同的内容,并调用了两次 insert()方法。
二、更新数据
SQLiteDatabase中也是提供了一个非常好用的 update()方法用于对数据进行更新,这个方法接收四个参数,第一个参数和 insert()方法一样,也是表名,在这里指定去更新哪张表里的数据。第二个参数是 ContentValues对象,要把更新数据在这里组装进去。第三、第四个参数用于去约束更新某一行或某几行中的数据,不指定的话默认就是更新所有行。
在项目中运用,首先在activity_main.xml中添加一个按钮:
<Buttonandroid:id="@+id/update_data"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="更新数据" />
然后修改MainActivity.java:
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbHelper = new MyDatabaseHelper(this , "BookStore.db" , null , 2);Button button = (Button) findViewById(R.id.create_database);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dbHelper.getWritableDatabase();}});Button addData = (Button) findViewById(R.id.add_data);addData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("name", "Book");values.put("author" , "orlion");values.put("pages", 9);values.put("price", 15.1);db.insert("book", null, values);values.clear();values.put("name", "Book2");values.put("author", "orlion");values.put("pages", 9);values.put("price" , 15.1);db.insert("book", null, values);}});Button updateData = (Button) findViewById(R.id.update_data);updateData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("price", 19.0);db.update("book", values, "name = ?", new String[] {"Book"});}});}
这样点击更新数据的按钮的时候就会把"book"的价格改成了19.0
三、删除数据
Button deleteData = (Button) findViewById(R.id.delete_data);deleteData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SQLiteDatabase db = dbHelper.getWritableDatabase();db.delete("book", "name = ?", new String[] {"Book"});}});
这里我们添加了一个删除按钮删除name=book的书。
四、查询数据
SQLiteDatabase中还提供了一个 query()方法用于对数据进行查询。这个方法的参数非常复杂,最短的一个方法重载也需要传入七个参数。那我们就先来看一下这七个参数各自的含义吧,第一个参数不用说,当然还是表名,表示我们希望从哪张表中查
询数据。第二个参数用于指定去查询哪几列,如果不指定则默认查询所有列。第三、第四个参数用于去约束查询某一行或某几行的数据,不指定则默认是查询所有行的数据。第五个参数用于指定需要去 group by的列,不指定则表示不对查询结果进行 group by操作。第六个参数用于对group by之后的数据进行进一步的过滤,不指定则表示不进行过滤。第七个参数用于指定查询结果的排序方式,不指定则表示使用默认的排序方式,其他几个 query()方法的重载其实也大同小异。
调用query()方法后会返回一个 Cursor对象,查询到的所有数据都将从这个对象中取出。
下面我们添加一个查询按钮然后给它绑定事件取出数据:
Button queryData = (Button) findViewById(R.id.query_data);queryData.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SQLiteDatabase db = dbHelper.getWritableDatabase();Cursor cursor = db.query("book", null, null, null, null, null, null, null);if (cursor.moveToFirst()) {do {String name = cursor.getString(cursor.getColumnIndex("name"));String author = cursor.getString(cursor.getColumnIndex("author"));int pages = cursor.getInt(cursor.getColumnIndex("pages"));double price = cursor.getDouble(cursor.getColumnIndex("price"));Log.d("databasedemo", "name = " + name);Log.d("databasedemo", "author = " + author);Log.d("databasedemo", "pages = " + pages);Log.d("databasedemo", "price = " + price);} while (cursor.moveToNext());}cursor.close();}});
五、使用SQL操作数据库
添加数据的方法如下:
db.execSQL("insert into Book (name, author, pages, price) values(?, ?, ?, ?)",
new String[] { "The Da Vinci Code", "Dan Brown", "454", "16.96" });
db.execSQL("insert into Book (name, author, pages, price) values(?, ?, ?, ?)",
new String[] { "The Lost Symbol", "Dan Brown", "510", "19.95" });
更新数据的方法如下:
db.execSQL("update Book set price = ? where name = ?", new String[] { "10.99",
"The Da Vinci Code" });
删除数据的方法如下:
db.execSQL("delete from Book where pages > ?", new String[] { "500" });
查询数据的方法如下:
db.rawQuery("select * from Book", null);
Android入门(十一)SQLite CURD相关推荐
- Android入门(十二)SQLite事务、升级数据库
原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...
- android 入门 006(sqlite增删改查)
android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite;import android.content.Context; import a ...
- android入门基础笔记,Sqlite数据库下载
* 移动通讯技术的发展: 第一代通讯技术:模拟信号 工作频段 缺点:保密性差 第二代通讯技术: 体积越来越小 数字信号(加密) 短信 彩信 第三代通讯技术: 数字信号 可处理图像.音乐 ...
- 小猪的Android入门之路 day 1
小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显 ...
- 基于sqlite的android数据库编程,Android编程之SQLite数据库操作方法详解
Android编程之SQLite数据库操作方法详解 发布时间:2020-09-07 12:33:04 来源:脚本之家 阅读:85 作者:低调小一 本文实例讲述了Android SQLite数据库操作方 ...
- 小猪的Android入门之路 Day 8 part 3
小猪的Android入门之路 Day 8 part 3 Android网络编程浅析--Android网络数据的下载 --转载请注明出处:coder-pig 本节引言: 我们的应用很多时候都会涉及到网络 ...
- Android入门文档
该文章为网络材料整理,部分内容经过重新编写. 一. 名词介绍 JDK:Java Development Kit Java 语言的软件开发工具包 JRE:Java Runtime Environment ...
- 网络编程懒人入门(十一):一文读懂什么是IPv6
本文同时发布于"即时通讯技术圈"公众号,链接是:https://mp.weixin.qq.com/s/cS5xB2DrjF52rmz6EGVJ6A. 本文参考了公众号鲜枣课堂的&q ...
- (4)Android入门——android四大组件基础介绍及打电话,发短信简单应用 单元测试
1,本章是android入门最后一篇,从后面开始将进入进阶阶段.我也会加快更新速度.但愿能保持每天三篇博文的数量.但是是在保证质量的前提下.后面我还会发布一些实际开发中用到的应用案例.敬请关注! 应用 ...
最新文章
- cli3 px转rem适配移动端_Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
- ArcBruTile 0.2.2
- Promise的用简要使用方式
- HTTP权威指南阅读笔记一:HTTP概述
- 为什么S/4HANA的销售订单创建会触发生产订单的创建 1
- U盘专杀工具,U盘防御软件,U盘病毒防火墙--UDiskSyS
- 57岁博士,第三次出征太空...
- FileInputStream 把文件作为字节流进行读操作
- php 多态有什么用,php面向对象多态的介绍与优势
- vs2015调试时不显示vector内容的解决方法
- MathType输入框怎么调整
- Unity图片优化-Dither算法(RGBA16优化)
- 第二季-专题19-移植tftp客户端
- 菜鸟学Linux 第048篇笔记 配置slave server
- 计算机设备替换法,同义词替换表的挖掘方法及装置、电子设备、计算机可读介质与流程...
- 如何在iPhone 12上管理5G设置来保护流量和电池续航
- 存算分离后,VxRail动态计算节点构建虚拟化更给力
- 银河麒麟桌面操作系统V10日常使用说明
- 及时反馈,让员工尊重你,信任你
- netstat 中state详解