读取属性文件中的参数化字符串,并使用PreparedStatement进一步执行

时间:2014-03-14 00:52:19

标签: java jdbc string-concatenation

我有一个简单的问题。

我在像这样的属性文件中有参数化的SQL语句

update = update table1 set value = 5 where ids in (?)

我班上有一个字符串

String test = "1, 2, 3, 4"

我需要读取属性文件,添加参数是哪个?最后执行PreparedStatement,但我可以弄清楚如何将属性文件中的字符串与我的测试字符串连接起来,最后传递以下查询来执行;

update table1 set value = 'blablabla';

我写得像这样,但它并没有真正起作用:

String pstring = prop.getProperty(update);
PreparedStatement pstmt = con.prepareStatement(pstring);
pstmt.setString(1, test);
pstmt.executeUpdate(pstmt);

抛出以下堆栈跟踪:

java.sql.SQLSyntaxErrorException: ORA-01722: invalid number

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1008)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)

如果你能帮助我,我真的很感激,因为我是java的新手,但我还是无法解决这个问题。

由于

1 个答案:

答案 0 :(得分:2)

load会返回void类型。您需要先加载属性,然后才能检索查询String

prop.load(new FileInputStream("config.properties"));
String queryString = prop.getProperty("update");
PreparedStatement pstmt = con.prepareStatement(queryString);
...