Postgres-列超出PreparedStatement中的范围-java
在Windows 8.1上使用Java 1.7.0.67的preparedstatement出现问题 基本上,我得到如下错误(从测试中): 我看得出来它告诉我我没有钱?但是它们在beforesetString消息中为所有人所看到 有人能看出我做的有什么不对吗?我对准备好的声明还不熟悉,我认为这是对的 谢谢和问候 塞恩Postgres-列超出PreparedStatement中的范围-java,java,postgresql,Java,Postgresql,在Windows 8.1上使用Java 1.7.0.67的preparedstatement出现问题 基本上,我得到如下错误(从测试中): 我看得出来它告诉我我没有钱?但是它们在beforesetString消息中为所有人所看到 有人能看出我做的有什么不对吗?我对准备好的声明还不熟悉,我认为这是对的 谢谢和问候 塞恩 您的查询应该是 String sql = "SELECT lineText FROM public.dbText_ABCDEF-001 WHERE Textid = ?"; 此外
您的查询应该是
String sql = "SELECT lineText FROM public.dbText_ABCDEF-001 WHERE Textid = ?";
此外,您不能为表名准备语句,因为它仅用于列值参数不是字符串替换。准备好的语句是数据库将准备的语句。数据库必须能够计算查询的执行计划。如果不知道查询使用哪个表,数据库就不可能准备执行计划。此外,准备语句的全部要点是避免引用值,并以给定格式格式化日期。所以占位符不能在引号内。明白了-我的PreparedStatement参考资料没有明确说明这一点…正如我所说的-我对他们是新手,我正在研究字符串替换而不是值…非常感谢。
String zLocale = "en_EN";
PreparedStatement pst1 = null;
logger.severe("Strt Testing");
String sql1;
sql1= "SELECT \"lineText\" FROM \"public\".\"dbText_?\" WHERE \"Textid\" = \'?\';";
pst1 = con.prepareStatement(sql1);
logger.severe("Before pstText: "+ pst1.toString());
pst1.setString(1, "ABCDEF-001");
pst1.setString(2, zLocale);
logger.severe("After pstText: "+ pst1.toString());
logger.severe("Done Testing");
String sql = "SELECT lineText FROM public.dbText_ABCDEF-001 WHERE Textid = ?";