为什么某些 SQLite 方法需要 Object[] 形式的参数,而其他方法则需要 String[] 形式?

2024-01-05

我对它的设计很好奇Android SQLite API http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html。例如,我们有

public void execSQL(String sql, Object[] bindArgs) 

对于不返回数据的 SQL,我们还有

public Cursor rawQuery(String sql, String[] selectionArgs) 

对于确实返回数据的 SQL。

为什么前者的参数应为对象数组,而后者的参数应为字符串数组?我知道由于 SQLite 的原因,只接受字符串可能是有意义的类型亲和力 http://www.sqlite.org/datatype3.html#affinity。但是,如果是这样,为什么不始终使用字符串数组作为参数呢?是否有一些非字符串参数有意义execSQL但不是为了rawQuery?


实际上,只接受字符串确实not这是有道理的,因为字符串永远不会与数字比较相等,即像这样的查询

c.rawQuery("SELECT * FROM mytable WHERE some_number_column = ?", args);

永远不会返回任何带有数字的记录。 (您必须将所有列声明为TEXT,并且永远不要使用表达式或将它们转换为类似CAST(... AS TEXT).)

Jens 提到了一个可能的解释,但这并不能成为不一致和糟糕设计的借口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么某些 SQLite 方法需要 Object[] 形式的参数,而其他方法则需要 String[] 形式? 的相关文章

随机推荐

  • 您可以安装不需要 Visual Studio 的独立 TFS 客户端吗?

    是否可以在未安装 Visual Studio 的服务器上获得独立的 TFS 客户端 我们想要一种从服务器 访问 TFS 项目的方法 而无需安装 Visual Studio 可能的 我见过 Team Explorer 但是如果没有 Visua
  • 获取连接网络的 WiFi 信号强度

    我正在尝试在 Android 应用程序中显示已连接 WiFi 网络的信号强度 我尝试过以下方法 Receiver for information on the network info private BroadcastReceiver m
  • CakePHP:向表单添加字段(动态)

    我正在尝试动态地将字段添加到我的 CakePHP 表单中 但似乎我使用的每种方法都有其自己无法修复的缺点 这是我尝试过的 不要添加新的输入 只需用逗号分隔单个输入中的值即可 这看起来很简单 但在尝试分解输入并将每个值保存在数据库中的新行中时
  • 为 C# 生成 XML 文档的 XSD? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道某处是否有 XSD 文件可用于验证使用 doc 选项编译 C 项目时生成的 XML 文档 我想
  • 如何为依赖动态数据的函数编写单元测试?

    假设您有一个网站 它使用一个函数从数据库检索数据并返回要显示 解析 等的结果 由于从数据库检索的数据是动态的 并且可能每天都在变化 因此如何正确地为此函数编写单元测试 假设该函数应该返回一个结果数组 显然 单元测试可以测试是否返回数组 但是
  • 如何设置 Windows 符号服务器

    我在网络上有一个备用服务器 我想用它来托管我们所有的构建符号 我已经知道如何在本地开发系统上设置符号缓存并将调试器 例如 Windbg 指向 符号文件路径 中的该路径 我认为我可以对网络上具有自己的符号缓存 例如 host symbols
  • 错误:Firestore 已初始化。您只能调用 settings() 一次,并且只能在调用 Firestore 对象上的任何其他方法之前

    因此 我正在为 firebase 规则编写测试 以便我可以为我在 stackoverflow 上编写的另一个问题创建可重现的代码 但我收到此错误 mocha test2 js Our social app 1 Can read a sing
  • VBA从Word表格复制到Excel

    我正在尝试从 Word 文件中的特定表单元格生成一个包含 5 列的 Excel 文件 从 Word 表复制到 Excel 我的Word文件有280个表格 我对要从 Word 文件复制的单元格进行寻址没有问题 但我不知道为什么结果是一个空白的
  • 通过 iPhone Web 应用程序访问相机

    据我了解 不太可能通过 HTML 访问网络摄像头 那么在 iPhone 上呢 是否可以 从 iOS6 开始 您可以使用以下命令访问相机和照片
  • 如何为Python 3子进程分配CPU亲和力?

    我在 Python 方面还是个新手 我在 Windows 7 和 Windows 10 上运行 Tkinter GUI 我有一个子进程以 1 KHz 运行数据记录器例程 我想为子进程设置 cpu 亲和力 我正在使用 Python 3 8 进
  • 使用 Media * API 进行录制时,支持的媒体类型的完整列表在哪里?

    我正在尝试学习如何在浏览器中记录媒体 我可能会让事情变得过于复杂 有大量直接的例子 但当录音被推到一个高度时 我陷入了困境 Blob具有任意选择的媒体类型的对象 而不检查该格式是否受支持 因此 我认为有一个清单 或者人们只是继续以过去的经验
  • C++ 模板的性能? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在anaconda上安装cx_freeze时出现包冲突

    我正在尝试使用 anaconda 提示符安装 cx freeze 按照他们网站上的内容 我使用了 conda install c pyzo cx freeze 我收到此错误 UnsatisfiableError The following
  • 熊猫数据框条件更改

    我正在处理 csv 时间序列数据 它显示每个时间范围内的步数 一旦步数超过 65535 它将从 0 开始计数 等等 但是 由于并非所有数据集都有 65535 计数 有些从 65530 开始 然后是 5 如果他们在时间范围内走了几个步骤 我不
  • 将 MATLAB 轴移动半步

    我正在尝试定位 MATLAB 的刻度以与我的网格对齐 但我找不到偏移标签的好方法 另外 如果我跑set gca XTickLabel 1 10 我的 x 刻度标签最终的范围为 1 到 5 这给出了什么 您需要移动刻度 但先获取标签并在移动后
  • 如何检测 iframe 大小调整?

    我有一个页面 其功能可以将此页面中的 iframe 高度调整为 iframe 内容的高度 但是当 iframe 具有切换操作时 高度会发生变化 并且该函数不会检测 iframe 的大小调整 有没有办法检测我的 iframe 内容是否发生变化
  • 为什么缓存控制:最大年龄不起作用?

    我正在倾斜http标头 并且我想在 缓存控制 字段上运行测试 所以我构建了一个只有默认页面的asp net网站 在这个页面中 我正在测试 缓存控制 字段 其 Page Load 中的代码如下 Response AddHeader Cache
  • 跨平台.Net? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如果您要编写一个在本地运行并调用 Web 服务的 GUI 应用程序 以实现跨平台 您可以使用 Net 来完成吗 您会推荐哪些工具 我正在考
  • 从 Backbone.js 模型中删除属性

    有没有办法从 a 中删除属性Backbone http documentcloud github com backbone model 原因是我在保存时传递了额外的数据来执行某些操作 但随后该数据会自动添加到我的模型中 文档说不要直接编辑
  • 为什么某些 SQLite 方法需要 Object[] 形式的参数,而其他方法则需要 String[] 形式?

    我对它的设计很好奇Android SQLite API http developer android com reference android database sqlite SQLiteDatabase html 例如 我们有 publ