我已经尝试了几个使用预处理语句的想法,但没有一个有效。这些是:
String insertSQL = "INSERT INTO APP.TEST (Name, 'role') VALUES (?, ?)";
String insertSQL = "INSERT INTO APP.TEST (Name, [role]) VALUES (?, ?)";
String insertSQL = "INSERT INTO APP.TEST (Name, role) VALUES (?, ?)";
答案 0 :(得分:2)
Apache Derby's documentation指定分隔的SQL标识符可以双引号。所以你的SQL字符串最终会像:
INSERT INTO APP.TEST (Name, "role") VALUES (?, ?)
由于它被放置在已经双引号的字符串中,反斜杠 - 转义内部引号:
String insertSQL = "INSERT INTO APP.TEST (Name, \"role\") VALUES (?, ?)";
Derby的list of reserved words目前没有将role
指定为保留,但如果在您的实施中它似乎是保留的,则必须相应地引用它。