我有这个表,我想在其中实现搜索过滤器。
CREATE TABLE ACCOUNT(
ID INTEGER NOT NULL,
USER_NAME TEXT,
PASSWD TEXT,
FIRST_NAME TEXT,
LAST_NAME TEXT,
LAST_LOGIN DATE,
DATE_REGISTERED DATE,
ROLE INTEGER,
CAN_LOGIN INTEGER
)
;
-- ADD KEYS FOR TABLE ACCOUNT
ALTER TABLE ACCOUNT ADD CONSTRAINT KEY1 PRIMARY KEY (ID)
;
String searchString =" 32&#34 ;;
SELECT * FROM ACCOUNT
WHERE " + searchString + " IN (ID, USER_NAME, FIRST_NAME, LAST_NAME) ORDER BY %S %S offset ? limit ?;
我收到错误
serverError: class java.lang.IndexOutOfBoundsException Index: 0, Size: 0
另外,我不想指定要搜索的每个表格列。有没有办法在默认情况下在所有列中实现搜索?只需指定一个我不想搜索的列?
答案 0 :(得分:2)
IN
列表存在类型转换问题。这些都必须是相同的类型,因此它们被转换为所比较的类型。并且,无法将字符串转换为整数。
如果您包含单引号,那么您的查询应该有效:
WHERE '" + searchString + "' IN (ID, USER_NAME, FIRST_NAME, LAST_NAME)