作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想执行下面的 SQL 语句:
UPDATE X SET y=10 WHERE z IN (1,2,3,4);
由于集合可以包含任意数量的元素,因此我创建了以下 SQL 字符串语句:
UPDATE X SET y=? WHERE z IN (?);
接下来,我很好地预编译了它,并使用 SQLiteStatement
类以下列方式提供投标参数:
statement.bindLong(1, myLong);
statement.bindString(2, "1,2,3,4");
statement.executeUpdateDelete();
我天真地希望它会起作用。决不。如果只有一个值作为第二个参数,例如。
statement.bindString(2, "1");
然后就可以了。否则没有机会。
这不是某种错误吗?任何其他建议如何以优雅的方式进行?当然,我可以直接将值放入 String 语句中:
UPDATE X SET y=? WHERE z IN (?);
但是预编译是不可能的。 :(
最佳答案
您不能在一个调用中绑定(bind)多个多头。
你应该做的是使用像这样的 SQL 字符串语句:
UPDATE X SET y=? WHERE z IN (?,?,?,?);
关于Android SQLiteStatement 和 UPDATE SET ... WHERE IN (1,2,3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20096478/
我是一名优秀的程序员,十分优秀!