gpt4 book ai didi

Sqlite3 - 将参数传递给准备好的语句

转载 作者:行者123 更新时间:2023-12-03 17:16:11 26 4
gpt4 key购买 nike

我已经准备好声明,我想从命令行工具进行测试,而无需“手动”传递参数。

示例 sql:

 SELECT * FROM TABLE WHERE X = ? AND Y = ?

有没有一种传递参数的方法,以便可以使用给定的值执行 SQL,例如: SQL bind(a,b,c) ?

谢谢,

最佳答案

编辑:不知道你在哪里运行它,但对于那些感兴趣的人来说,这是一个 Android 解决方案:

如果我正确理解您的问题,您希望将值从命令行传递到 SQL 语句中以测试结果。这有点工作,但可行:

adb 中有将 Intent 发送到特定 Activity 的功能,其中可能包括 Extras。如果您总是有固定数量的参数,您可能会编程一个 Activity 以使用包含 Extras 的 Intent 启动并从命令行传递它。输入命令(提示音乐):adb shell am start .有关此命令的更多信息,请参阅 documentationthis tutorial

这是一些示例代码:

public class MainActivity extends Activity {

private final String EXTRA1 = "com.example.sample.EXTRA1";
private final String EXTRA2 = "com.example.sample.EXTRA2";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...

String qparam1 = null;
String qparam2 = null;
Intent calledBy = getIntent();

if (calledBy.hasExtra(EXTRA1)) qparam1 = calledBy.getStringExtra(EXTRA1);
if (calledBy.hasExtra(EXTRA2)) qparam2 = calledBy.getStringExtra(EXTRA2);
...

此时您现在有几个选项,因为您有参数,您可以运行正常的 getContentResolver().query() ,创建选择并将参数作为选择参数传递:
String selection = "WHERE x=? AND Y=?";
String[] args = new String[]{qparam1, qparam2};
getContentResolver().query(uri, projection, selection, args, null);

(如果您有 intlong 参数,请注意这样做。请参阅 this article。)

您还可以选择创建预编译语句。一些预编译的语句只会给你一个 1x1 的结果,所以它可能会受到限制,这取决于你期望的输出。
SQLiteDatabase db; // assume already initialized
SQLiteStatement statement = db.compileStatement("SELECT * FROM table WHERE x=? AND y=?");

statement.bindAllArgsAsStrings(new String[]{qparam1, qparam2});
// now run some kind of execute command, as per SQLiteStatement documentation

SQLiteStatement documentation

呸。最后,使用 adb shell am start发送数据。根据文档,您可以执行以下操作
> adb shell am start -n com.example.sample/.MainActivity -e com.example.sample.EXTRA1 first -e com.example.sample.EXTRA2 second

如果一切按计划进行,它应该启动您的事件,将附加内容传递到您的查询中,然后运行它。然后,根据您的输出,剩下的就是确定将输出放在哪里,可能是您以后可以检索的文件。

祝你好运!

关于Sqlite3 - 将参数传递给准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835553/

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