setbytes的参数索引做什么

wnavrhmk  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(358)

我有以下代码行:

conn.prepareStatement(SQL).setBytes(1, bos.toByteArray());

其中,sql是我准备的语句字符串,bos是我的bytearrayoutputstream
我知道setbytes中的参数0是根据oracles文档的parameterindex,该文档说明:
将指定的参数设置为给定的java字节值。
我的问题是这到底是什么意思?如果我把1换成2(或其他数字),会怎么样;它有什么功能?
我看了一些sqlite教程,没有人提到它的实际功能。

mtb9vblg

mtb9vblg1#

准备好的语句的sql语句的占位符用 ? . 的第一个参数 setBytes (或任何其他 setX 方法)确定要将值赋给哪些占位符。
1对应于第一个 ? 在sql语句中,2对应于第二个 ? ,等等。。。
例如,如果您的语句是:

"SELECT X, Y " +
    "FROM TableName " +
    "WHERE Z = ?"
                       );
``` `setBytes(1, bos.toByteArray())` 将传递的字节数组分配给第一个(且仅限于此) `?` 在声明中。在那个例子中 `setBytes(2, bos.toByteArray())` 会是个错误,因为只有一个 `?` 在声明中。

相关问题