首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Carson带你学Android:SQLlite数据库操作全解析(SQLiteOpenHelper类)

查询数据 (Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String...groupBy, String having, String orderBy, String limit) // 查询指定的数据表返回一个带游标的数据集。...(Cursor) rawQuery(String sql, String[] selectionArgs) //运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别 = 防止SQL...具体使用 使用步骤 = 自定义数据库子类(继承SQLiteOpenHelper类)、创建数据库 & 操作数据库(增、删、查、改) 下面,我将逐一介绍每个步骤 3.1 自定义数据库子类(继承 SQLiteOpenHelper...使用建议:都使用SQL语句,因为:SQL语句 通用 & 简单 原生的方法insert()、delete()等方法具备多个参数,使用复杂 4.

94120

2014-10-27Android学习------SQLite数据库操作(一)------城市列表应用程序

The SQL string must not be ; terminated selectionArgs You may include ?...参数:sql 就是提供的可以执行的sql语句,对数据库进行操作 参数:selectionArgs[] 就是查询的条件 返回值:是一个游标集 Android采用游标对从数据库查询出来的结果进行随机的读写访问...,在查询数据库后,将结果返回给游标(即android.database.Cursor) 接下来还需要学习一个函数 Cursor.moveToPosition(i) public abstract...类的数据库操作类, 没有选择调用getWriteableDatabase()或者getReadableDatabase()方法的时候系统去真正创建数据库 而是选择openOrCreateDatabase...(数据库的路径,游标工厂,数据库的访问模式)来create一个数据库 在使用的时候我们定义一个Cursor 创建了一个游标,必须要执行查询操作的,我们采用了rawQuery() 前提条件就是我们已经有了数据库源文件

32030
您找到你想要的搜索结果了吗?
是的
没有找到

Android 进阶11:进程通信之 ContentProvider 内容提供者

ContentProvider 以一个或多个表(与在关系型数据库中的表类似)的形式将数据呈现给外部应用。 行表示提供程序收集的某种数据类型的实例,行中的每个列表示为实例收集的每条数据。...由于这个查询子句被作为 SQL 语句处理,因此这可能会导致 ContentProvider 擦除数据库中的所有表。 要避免此问题,可使用一个用于将 ?...作为可替换参数的查询子句以及一个单独的选择参数数组。 也就是将查询的 “字段名 = ?” 和具体值分别传入到在上述代码的 selection 和 selectionArgs。...这样执行查询操作时,用户的输入直接受查询约束,而不会被作为 SQL 语句的一部分,因此无法注入恶意 SQL。 将 ?...用作可替换参数的条件语句和一个选择参数数组是指定查询语句的首选方式,即使 ContentProvider 管理的数据类型不是 SQL 数据库

2.5K100

《移动互联网技术》 第七章 数据存取: 掌握File、SharePreferences、SQLite和ContentProvider四种数据存取方式

第二个参数是数据库名;第三个参数允许在查询数据的时候返回一个游标(Cursor),一般传入空 null。第四个参数表示当前数据库的版本号,用来对数据库进行升级操作。...一个应用程序要使用上述多个共享数据,如果需要开发者了解每个内容提供器的不同实现,就太繁琐了;所以Android提供了内容解析器ContentResolver来统一管理不同内容提供器的共享功能。...要访问数据需要用到ContentResolver的查询函数。它的查询方式类似于SQL语句,用uri表示要访问的数据地址。通常数据以表的形式呈现。...projection是要查询的列名;selection是约束条件;selectionArgs是条件参数对应的值;sortOrder是排序方式。查询的返回结果是游标,通过它可以逐行访问数据。...uri 参数用来确定查询哪张表,其他参数与内容解析器的query函数的参数一样。 在query函数中,首先匹配要执行的动作,如果是查询,就调用数据库查询语句,获取数据,返回游标

6610

Android Content provider 组件

Provier(即继承自ContentProvider的子类) 或者是将自己的数据添加到已有的Content Provider中去,后者需要保证现有的Content Provider和自己的数据类型相同且具有该...1.数据模型 Content Provider 将其存储的数据以数据表的形式提供给访问者,在数据表中每一行为一条记录,每一列为具有特定类型和意义的数据。...2.URI URI,每一个Content Provider 都对外提供一个能够唯一标识自己数据集(data set)的公开URI, 如果一个Content Provider管理多个数据集,其将会为每个数据集分配一个独立的...Android应用程序可以使用文件或SqlLite数据库来存储数据。Content Provider提供了一种多应用间数据共享的方式,比如:联系人信息可以被多个应用程序访问。...if (c.moveToFirst()) { // 遍历游标 for (int i = 0; i < c.getCount(

49640

2014-10-27Android学习------SQLite数据库操作(二)-----数据库的创建--SQLiteHelper extends SQLiteOpenHelper

可选的数据库游标工厂类,当查询(query)被提交时,该对象会被调用来实例化一个游标。...path:打开或创建的数据库文件 factory:可选的数据库游标工厂类,当查询(query)被提交时,该对象会被调用来实例化一个游标。...一般使用execSQL(sql)命令来执行 在对数据库中的表进行相关操作时,可以使用非查询的execSQL(String sql)来执行。...Cursor学习: Android采用游标对从数据库查询出来的结果进行随机的读写访问,在查询数据库后,将结果返回给游标(即android.database.Cursor),这是查询结果的记录集,示意图如下...),必须执行一个查询,通过SQL使用rawQuery()方法或是更精心的query()方法,而不能使用execSQL(String sql)【戴帽子】方法。

71720

12.Android-SQLiteOpenHelper使用

,如果传入null 则表示创建临时数据库,在应用退出之后,数据就会丢失 //第三个参数:游标工厂 如果使用系统默认的游标工厂就传入null,一般都填null //第四个参数:数据库的版本号 用版本号来控制数据库的升级和降级...(String)来执行sql语句 oldVersion : 显示之前旧的数据库版本。...SQLiteDatabase类中常用方法如下所示: public Cursor rawQuery (String sql, String[] selectionArgs); // rawQuery:查询数据库内容...,并将查询到的结果集保存在Cursor游标类中,并返回. // sql:填入select查询语句 // selectionArgs:如果sql参数填入的内容是正常语句,则这里填NULL,如果是where...void execSQL(String sql); //用来执行INSERT、UPDATE 或 DELETE 的sql语句 Cursor类游标默认是指向所有结果之前的一行,然后通过moveToNext

1K10

Carson带你学Android:关于ContentProvider的知识都在这里了!

vnd.android.cursor.item/自定义 // 形式2:多条记录(集合) vnd.android.cursor.dir/自定义 // 注: // 1. vnd:表示父类型和子类型具有非标准的...vnd.example.rail 4.3 ContentProvider类 4.3.1 组织数据方式 ContentProvider主要以 表格的形式 组织数据 同时也支持文件数据,只是表格形式用得比较多 每个表格中包含多张表...若ContentProvider的数据存储方式是使用SQLite & 一个,则不需要,因为SQLite内部实现好了线程同步,若是多个SQLite则需要,因为SQL对象之间无法进行线程同步 // b....答: 一般来说,一款应用要使用多个ContentProvider,若需要了解每个ContentProvider的不同实现从而再完成数据交互,操作成本高 & 难度大 所以再ContentProvider类上加多了一个...步骤1:创建数据库类 关于数据库操作请看文章:Android:SQLlite数据库操作最详细解析 DBHelper.java public class DBHelper extends SQLiteOpenHelper

43710

Android:关于ContentProvider的知识都在这里了!

vnd.android.cursor.item/自定义 // 形式2:多条记录(集合) vnd.android.cursor.dir/自定义 // 注: // 1. vnd:表示父类型和子类型具有非标准的...vnd.example.rail 4.3 ContentProvider类 4.3.1 组织数据方式 ContentProvider主要以 表格的形式 组织数据 同时也支持文件数据,只是表格形式用得比较多 每个表格中包含多张表...若ContentProvider的数据存储方式是使用SQLite & 一个,则不需要,因为SQLite内部实现好了线程同步,若是多个SQLite则需要,因为SQL对象之间无法进行线程同步 // b....答: 一般来说,一款应用要使用多个ContentProvider,若需要了解每个ContentProvider的不同实现从而再完成数据交互,操作成本高 & 难度大 所以再ContentProvider...具体使用 步骤1:创建数据库类 关于数据库操作请看文章:Android:SQLlite数据库操作最详细解析 DBHelper.java public class DBHelper extends

2.3K32

Android Loader 机制,让你的数据加载更加轻松

: 可用于每个 Activity 或 Fragment 支持异步加载数据 监控数据源并在内容变化时传递新结果 在某一配置更改后重建加载器时,会自动重新连接上一个加载器的游标。...使用此加载器是从 ContentProvider 异步加载数据的最佳方式,而不用通过 Activity 或 Fragment 的 API 来执行托管查询 以上便是 Loader 机制相关的类,但并不是我们创建的每个加载器都要用到上述所有的类和接口...Loader 实例,每个 Activity 或 Fragment 中只有一个 LoaderManager。...,它将按照在 selection 中显示的顺序替换为 selectionArgs 中的值 sortOrder 行的排序依据,采用 SQL ORDER BY 子句格式。...例如,如果数据是来自 CursorLoader 的一个游标,则我们不应手动对其调用 close()。

72310

Python MySQL 数据库查询选择数据、使用筛选条件、防止 SQL 注入

从表格中选择数据 要从MySQL中的表格中选择数据,请使用"SELECT"语句: 示例选择"customers"表格中的所有记录,并显示结果: import mysql.connector mydb...使用筛选条件选择记录 在从表格中选择记录时,您可以使用"WHERE"语句来筛选选择的记录: 示例选择地址为"Park Lane 38"的记录: import mysql.connector mydb...() for x in myresult: print(x) 防止SQL注入 当查询值由用户提供时,应该转义这些值。...这是为了防止SQL注入,这是一种常见的网络黑客技术,可以破坏或滥用您的数据库。...mysql.connector 模块具有转义查询值的方法: 示例使用占位符 %s 方法转义查询值: import mysql.connector mydb = mysql.connector.connect

36520

Android必知必会的四大组件--ContentProvider

: (1)获取一个ContentResolver,并调用query(),内部参数很多,基本和数据库查询的参数保持一致。...acquireUnstableProvider(uri)的方法,而返回值IContentProvider,对应就是一个Binder机制 (3)内部通过对uri的一些解析,找得到对应的文件,然后转化成Cursor游标...(4)通过游标的滑动读取,就转化成了我们的数据 query()内部参数分析 uri:位置暴露的唯一表示。...projection:返回列(字段) selection:设置条件,相当于数据库中的where selectionArgs:和selection联合使用,用于替换selection中的 sortOrder...对于这正常的一个应用一般都是要使用很多个ContentProvider,若需要了解每个ContentProvider的不同实现从而再完成数据交互难度且复杂成本极高,加上了一个ContentResolver

52340

【Android从零单排系列四十一】《Android数据存储方式-ContentProvider》

同时,也可以定义多个URI来定位不同类型的数据。...查询数据:使用query()方法查询数据,指定要访问的URI、投影(即要返回的列)、选择条件、排序顺序等参数。该方法返回一个Cursor对象,可以通过该对象获取查询结果。...参数包括要访问的URI、要返回的列(投影)、选择条件、选择参数和排序顺序。返回一个Cursor对象,可以使用它来获取查询结果。...delete(Uri uri, String selection, String[] selectionArgs):用于从ContentProvider中删除数据。参数包括要删除的URI和选择条件。...数据安全性:ContentProvider具有权限控制机制,可以限制其他应用对数据的访问权限。这样可以确保敏感数据不被未经授权的应用程序获取,提高数据的安全性。

23320

【Android开发基础系列】数据持久化专题

3.2.2 executeSQL db.executeSQL(String sql); db.executeSQL(String sql, Object[] bindArgs);//sql语句中使用占位符...查询操作相对于上面的几种操作要复杂些,因为我们经常要面对着各种各样的查询条件,所以系统也考虑到这种复杂性,为我们提供了较为丰富的查询形式: db.rawQuery(String sql, String[..., String groupBy, String having, String orderBy, String limit);         上面几种都是常用的查询方法,第一种最为简单,将所有的SQL...;在添加多个Person信息时,我们采用了事务处理,确保数据完整性;最后我们提供了一个closeDB方法,释放数据库资源,这一个步骤在我们整个应用关闭时执行,这个环节容易被忘记,所以朋友们要注意。        ...我们获取数据库实例时使用了getWritableDatabase()方法,也许朋友们会有疑问,在getWritableDatabase()和getReadableDatabase()中,你为什么选择前者作为整个应用的数据库实例呢

35520

android学习笔记----内容提供者

运行结果: 这是本程序自己的查询,那么需要让别的程序也能查询本程序的数据库该怎么做呢 先只暴露出查询方法,在本程序添加一个java文件 AccountProvider.java import android.content.ContentProvider...,对数据库进行查询操作 // 想操作数据库必须获得sqlitedatabase对象 SQLiteDatabase db = myOpenHelper.getReadableDatabase...而不是选择参数中的显式值,以便只有这些值不同的查询才会被识别为缓存目的相同。 参数 uri Uri: 使用content://方案的URI,用于检索内容。 该值绝不能为空。...selectionArgs String: 您可以在选择中包含?s,它将被selectionArgs中的值替换,它们将在选择中出现。这些值将绑定为字符串。 该值可以为null。...,对数据库进行查询操作 // 想操作数据库必须获得sqlitedatabase对象 SQLiteDatabase db = myOpenHelper.getReadableDatabase

40420
领券