gpt4 book ai didi

java - 在 SQLite 中使用 Blob 字段作为查询参数

转载 作者:行者123 更新时间:2023-11-30 00:50:34 26 4
gpt4 key购买 nike

我在 Android 上工作,正在研究 SQLite 数据库的使用。我已经知道如何为数据库执行诸如创建查询插入等操作。

举个例子,假设有如下表定义:

CREATE TABLE bean84_b (id INTEGER PRIMARY KEY AUTOINCREMENT, column_bean BLOB);

然后要执行的 SQL 查询是:

SELECT id, column_bean FROM bean84_b WHERE column_bean=?

执行上述查询的 java 代码是:

byte[] param1=...
String[] args={String.valueOf(param1)};
Cursor cursor = database(). rawQuery("SELECT id, column_bean FROM bean84_b WHERE column_bean=?", args);

是否可以像 SELECT 参数一样使用 BLOB 列?

最佳答案

这是 Android 数据库 API 中的一个设计错误。

query 和 rawQuery 只接受字符串参数。 execSQL 接受任何对象参数但不返回结果。 SQLiteStatement 接受任何类型的参数,但只允许返回单个值的查询。

您可以将 blob 与其他字段绑定(bind)的另一种类型 http://www.programcreek.com/java-api-examples/index.php?api=android.database.sqlite.SQLiteStatement

在 Android 数据库 API 中,execSQL() 是唯一一个函数参数不是 String[] 而是 Object[]:

  byte[] blob = ...; 
db.execSQL("DELETE FROM t WHERE my_blob = ?", new Object[]{ blob });

关于java - 在 SQLite 中使用 Blob 字段作为查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41092903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com