我有以下代码行:
conn.prepareStatement(SQL).setBytes(1, bos.toByteArray());
其中 SQL 是我准备好的语句字符串, bos 是我的byteArrayOutputStream
我知道setBytes中的参数0是针对 parameterIndex 的,根据Oracles Documentation说明:
将指定参数设置为给定的Java字节值。
我的问题究竟是什么意思?如果我用1(或任何其他数字)切换1,会发生什么情况;它有什么功能?
我查看了一些SQLite教程,但没有人发现这实际上有什么用。
答案 0 :(得分:2)
准备好的声明的SQL语句的占位符标有?
。
setBytes
(或任何其他setX
方法)的第一个参数决定了您为这些值分配哪些占位符。
1对应于SQL语句中的第一个?
,2对应于第二个?
,依此类推......
例如,如果您的陈述是:
"SELECT X, Y " +
"FROM TableName " +
"WHERE Z = ?"
);
setBytes(1, bos.toByteArray())
将传递的字节数组分配给语句中的第一个(也是唯一的)?
。在该示例中,setBytes(2, bos.toByteArray())
将是一个错误,因为语句中只有一个?
。