sqlite模糊查询与分页

2023-05-16

sqlite模糊查询与分页
/**
*
*
@param
queryWords  要查询的关键词(中英文都可以)
*
@param
curItem  当前查询到的item 所在位置
*
@param
sizeRequest  每次请求查询的数据行数
    *
@return  返回值是一个List,里面保存的是一条条记录
    */
public List<Glossary> findDBManagerWords(String queryWords , int curItem, int sizeRequest) {
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
                        DBManager.
DB_PATH + "/" + DBManager. DB_NAME , null ); // 获取导入的数据库操作对象

        
SQLiteDatabase db = database;
        
// //如果只对数据进行读取,建议使用此方法
        
dbGlossary = new ArrayList<Glossary>();
        
if ( dbGlossary != null ) {
                
dbGlossary .clear(); // 如果列表里有数据,重新加载前应清空
        
}
        // 查询 glossary这张数据表
         Cursor cursor = db.rawQuery(
                        
"select * from glossary where glo_EN_Name like ? or glo_CN_Name like ? or glo_description like ? limit ?,?" , new String[] { "%"
                                  
+ queryWords + "%" , "%" + queryWords + "%" , "%" +queryWords + "%" ,String.valueOf(curItem),String.valueOf(sizeRequest)});
        
     //select查询返回的是一个cursor,通过对cursor 进行循环,可以解析出每一个字段
         while (cursor.moveToNext()) {

                String str_glo_CN_Name = cursor.getString(cursor.getColumnIndex(
"glo_CN_Name" ));
                String str_glo_EN_Name = cursor.getString(cursor.getColumnIndex("glo_EN_Name" ));
                String str_glo_description = cursor.getString(cursor .getColumnIndex("glo_description"));
                 //将一条记录里的每一个字段保存到glossary这个对象中,该对象可能还有其他属性,没有赋值的话就是默认值
                Glossary glossary = new Glossary();
                glossary.setGloCnName(str_glo_CN_Name);
                glossary.setGloEnName(str_glo_EN_Name);
                glossary.setGloDescription(str_glo_description);
                 
                //将对象保存添加进List中
                 dbGlossary .add(glossary);
        }

        cursor.close();
        
// db.close();
        
if (db.isOpen()) {
                db.close();
        }
        //返回List
         return dbGlossary ;

}
以上的findDBManagerWords()函数中,最重要的是下面这句话:
Cursor cursor = db.rawQuery(
                        
"select * from glossary where glo_EN_Name like ? or glo_CN_Name like ? or glo_description like ? limit ?,?",new String[] { "%"
+ queryWords + "%" , "%" + queryWords + "%" , "%" +queryWords + "%" ,String.valueOf(curItem),String.valueOf(sizeRequest)});
rawQuery()的定义形式如下
public Cursor rawQuery (String sql, String[] selectionArgs)
sql :the SQL query. The SQL string must not be ; terminated
selectionArgs : You may include ?s in where clause in the query, which will be replaced by the values from selectionArgs. The values will be bound as Strings.
该函数第一个字段 sql 是我们用来查询时使用的 SQL语句,要注意的是,用select 语句时,会涉及到查询条件,条件里的参数我们都用问号(?)来代替,
具体问号里面是哪个关键词,要放在函数的第二个参数selectionArgs当中~~
selectionArgs是一个字符串数组,数组里的每个元素都是字符串(如果查询条件中某个参数是int类型的,可以用String.valueOf(sizeRequest) 方式来转换)
上面语句还涉及到select的模糊查询,
将会对glo_EN_Name,glo_CN_Name,glo_description这几个字段进行模糊查询,
"%" + queryWords +"%" 的意思是,只要字段中包含queryWords这个关键字,那么就会被检索出来,
前后的两个百分号代表关键字之前或之后可以有任意多个字符
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlite模糊查询与分页 的相关文章

  • 将 .sql 文件导入 SQLite

    我正在尝试将大型 sql 文件导入 SQLite db 文件 但出现以下错误 sqlite gt read smsCorpus en 2012 04 30 sql Error near line 23 near COMMENT syntax
  • 带外键或不带外键的引用有什么区别

    关于SQLite 带外键或不带外键的引用有什么区别 这有什么区别 CREATE TABLE players set id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL player id INTEGE
  • 如何从 SQLite 的异步 PCL 版本使用 SQLiteAsyncConnection?

    我使用的是 Sqlite net 的 PCL 版本https github com oysteinkrog SQLite Net PCL https github com oysteinkrog SQLite Net PCL 但是 我无法获
  • SQLite:具有四个表的完全外连接

    编辑 可以找到这个问题的扩展here https stackoverflow com questions 47667304 sqlite full outer join with four tables with 30 columns 我想
  • 还有其他方法可以在 python sqlite3 模块中导入数据文件(如 .csv)吗? 【不一一插入】

    在 sqlite3 的客户端 CLI 中 有 import file TABLE name 来执行此操作 但是 我目前不想将 sqlite3 安装到我的服务器上 在python sqlite3模块中 我们可以创建和编辑数据库 但是 我还没有
  • Rails 中的时间字段返回空白

    我有一个在 Sqlite3 上运行的简单 Rails 3 b1 Ruby 1 9 1 应用程序 我有这张表 create table time tests do t t time time end 我看到这种行为 irb main 001
  • Android sqlite 缺少列

    我的 SQLite 数据库缺少一个我知道存在的列 我将无法从 Android 模拟器中提取数据库 因为如果不重写大量代码 就无法使用模拟器填充数据库 logcat 返回sqlite returned error code 1 msg tab
  • python sqlite3从excel创建数据库

    我正在尝试从 Excel 电子表格创建数据库 我有下面的代码 问题是当我运行代码时 我的数据库为每列创建一个表 我想为工作簿中列出的每个电子表格创建一个表格 工作表名称为工作表 1 和工作表 2 import sqlite3 import
  • 限制 sqlite 表的最大行数

    我希望实现一种 活动日志 表 其中用户执行的操作存储在 sqlite 表中 然后呈现给用户 以便他们可以看到他们所做的最新活动 然而 自然地 我觉得没有必要保留每一个历史记录 所以我想知道是否有一种方法可以配置表以在达到最大设置限制后开始修
  • 在 Python 中使用 SQLCipher - 最简单的方法 [重复]

    这个问题在这里已经有答案了 我正在编写一个可以在加密的 SQLite 数据库上运行的 Python 实用程序 最终我会将此类实用程序转换为可执行文件 以便更轻松地交付给团队的其他成员 我读了很多关于 SQLCipher 的页面 但他们都谈论
  • 应用程序内的 SQLite 文件版本兼容性

    我有一个 C NET 应用程序 一种复杂的计算应用程序 其中用户输入数据 处理后的信息使用 JSON 序列化和 EF 保存到 SQLite 文件中 需要时可以将其加载到我们的应用程序中 应用程序在开发过程中经历了很多变化 类也被修改 因此
  • SQLite - 左连接

    我需要进行这样的查询 SELECT table1 table2 column FROM table1 LEFT JOIN table2 ON table1 column table2 column 但这不起作用 如果我尝试相同的查询但替换第
  • SQlite 获取最近的位置(带有纬度和经度)

    我的 SQLite 数据库中存储有纬度和经度的数据 我想获取距我输入的参数最近的位置 例如我当前的位置 纬度 经度等 我知道这在 MySQL 中是可能的 并且我已经做了相当多的研究 SQLite 需要一个自定义外部函数来实现半正弦公式 计算
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • Android - 在sqlite数据库中存储敏感数据

    我需要将敏感数据存储在 Android 应用程序的 sqlite 数据库中 我如何确定这些数据非常安全 我知道我可以使用密钥加密数据 但是我将该密钥存储在哪里 我也不想要求用户填写密钥 我只是希望它能够自行工作 因为我害怕逆向工程 所以我也
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 如何在首次运行时填充大型 SQLite 数据库

    我正在开发一个基于 SQLite 数据库的字典应用程序 该数据库包含超过 300 000 行 问题在于 最终形式的数据库文件由全文索引表组成 并且重量远远超过150Mb 我通过创建无内容的 fts4 表设法将 db 文件大小降至最低 数据库
  • Android:创建具有关系的 SQLite 数据库

    我正在尝试创建一个需要具有一对多关系的两个表 SQLite 数据库的应用程序 基本上 第一个表将允许用户创建一名员工 当他们点击该员工时 他们将进入第二个活动 该活动将允许用户为该员工添加多个电话号码 这些电话号码存储在第二个表中 我真的不
  • EF Core 2.1 启动缓慢

    在获得了 EF6 的一些经验后 例如this https stackoverflow com questions 48441674 extremely slow ef startup 15 minutes 我想尝试一下 EF Core 因为
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu

随机推荐

  • 基于HHARM9-EDU的TCP/IP(UDP)协议的实现

    基于HHARM9 EDU的TCP IP UDP 协议的实现 摘 要 xff1a 嵌入式技术的发展日新月异 xff0c 现如今 xff0c 嵌入式设备已经广泛应用于各种网络 xff0c 本文简要地说明一下如何实现 PC 与 HHARM9 ED
  • 简单的linux c socket例子

    服务端代码 xff1a span style color 000000 span style color 0000cc span span style color ff0000 include span span style color 0
  • Mask R-CNN图像识别和分割实现步骤(二)

    一 搭建环境 xff08 widdows10 xff09 xff08 一 xff09 安装anaconda3 1 下载地址 xff1a Anaconda Individual Edition 2 安装步骤 xff1a 图上双击 xff0c
  • C++ STL

    C 43 43 STL vector 变长数组 xff0c 倍增的思想 size 返回元素个数 empty 返回是否为空 clear 清空 front back push back pop back begin end 支持比较运算 xff
  • 结构体对齐规则

    结构体对齐规则 xff1a 1 第一个成员在于结构体变量偏移量为0的地址处 2 其他成员变量要对齐到某个数字 xff08 对齐数 xff09 的整数倍的地址处 对齐数 61 编译器默认的一个对齐数 与 该成员大小的 较小值 3 结构体总大小
  • 串口通信数据位长度对传输数据的影响

    针对串口通信 xff0c 关于设置数据位长度对通信的影响 xff0c 如图 xff1a 在串口数据通信中 xff0c 会看到串口参数设置 其中 数据位 设置 xff0c 共有四档选项 xff0c 分别是8 7 6 5 那么改变这个参数会对数
  • 建议收藏丨你想了解的动捕内容全在这儿!

    导语 对于第一次听说动作捕捉的大多数人而言 xff0c 动作捕捉听起来是一个 34 高级 34 同时 摸不清门路 的词汇 它作为虚拟与现实的沟通桥梁 xff0c 被应用于科学研究 影视制作 虚拟主播 体育运动 步态分析等广泛领域 xff0c
  • ROS速成之发送&接收消息

    人真的老了 xff0c 扔了个周末 xff0c 完全不记得干了什么 论纪录的重要性啊 xff0c 当时觉得明白的很 xff0c 你扔两天试试 xff1f 扔一年试试 xff1f 扔几年试试 xff1f 最近参加的各种项目脑疼眼乏 xff0c
  • MFC VC 双缓冲绘图基本原理与实现,详细解释

    MFC VC 双缓冲绘图基本原理与实现 xff0c 详细解释 MFC做了一些时间了 xff0c 不得不面对 的是在界面上画图的 当然你可以直接搜索到能用的代码 xff0c 并且基本能满足要求 不过这样总不是学习的态度 本着学习分享的态度 x
  • 关于dlg.DoModal()==IDOk的理解

    问题1 xff1a if dlg DoModal 61 61 IDOK 怎么理解啊 xff1f 问题2 xff1a 当我 CMyDlg dlg 时 xff0c 对话框显示了吗 xff1f 是不是要写dlg DoModal 这时对话框才显示出
  • 关于中值滤波算法,以及C语言实现

    1 什么是中值滤波 xff1f p p p style line height 28px margin top 0px margin bottom 10px padding top 0px padding bottom 0px color
  • (重)python:subprocess模块之Popen方法简介,管道机制(stdout\stdin\stderr)实现shell命令执行

    subprocess是Python 2 4中新增的一个模块 xff0c 它允许你生成新的进程 xff0c 连接到它们的 input output error 管道 xff0c 并获取它们的返回 xff08 状态 xff09 码 本文主要举例
  • 图像分辨率和图像大小的计算

    一 BMP位图 1 一个实际例子 xff0c 选择一个24位深度的225 225位图 xff0c 由于24位位图是真彩色 xff0c 没有颜色表这一样 xff0c 所以 其文件大小为152 154字节 xff0c 则 152 154 61
  • 关于 *i++与 ++*i

    一直都不知道 i 43 43 与 43 43 i有什么区别 xff0c 也不知道该怎么用 xff0c 今天特地研究了一下 看下面一段代码 xff1a include lt iostream gt include lt string gt u
  • sql语句中select……as的用法

    as 可理解为 xff1a 用作 当成 xff0c 作为 xff1b 一般是重命名列名或者表名 1 例如有表table xff0c 列 column 1 column 2 你可以写成 select column 1 as 列1 column
  • C++中virtual(虚函数)的用法

    在面向对象的C 43 43 语言中 xff0c 虚函数 xff08 virtual function xff09 是一个非常重要的概念 因为它充分体现了面向对象思想中的继承和多态性这两大特性 xff0c 在 C 43 43 语言里应用极广
  • 关于32位系统中int、float、short、double等占多少个字节

    我用VC编译的 xff0c 测试了一下 xff0c 代码如下 xff1a include 34 iostream 34 using namespace std int main cout lt lt sizeof char lt lt en
  • C语言中关于int、long int、long long 的区别

    1 关于int 和 long int xff08 1 xff09 在VC下没有区别 两种类型均用4个字节存放数据 xff08 2 xff09 VC是后出的编译器 xff0c 之前有很多早期的C编译器 xff0c 在早期编译器下long in
  • arp a命令的通俗解释

    ARP A 查询系统中缓存的ARP表 ARP表用来维护IP地址与MAC地址的一一对应 比方说 xff0c 某推拿室总有30名服务员 xff0c 为了方便管理 xff0c 服务员都编了号 xff0c 由01编到30 客人们都只记得服务员的编号
  • sqlite模糊查询与分页

    sqlite模糊查询与分页 64 param queryWords 要查询的关键词 xff08 中英文都可以 xff09 64 param curItem 当前查询到的item 所在位置 64 param sizeRequest 每次请求查