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

Java 从属性文件中读取参数化字符串,并使用PreparedStatement进一步执行,java,jdbc,string-concatenation,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';

我有一个简短的问题

我已经在这样的属性文件中参数化了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新手,我还没弄明白

谢谢

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

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

您的代码是否引发异常?发生了什么?这是我收到的例外,在最初的postMy bad中更新,我应该像你写的那样发布。我的代码实际上是说同样的事情,但仍然不起作用。如果我只从属性文件中加载该字符串,它应该可以,但它是参数化的,正如我首先解释的。stacktrace表明字段
是一个数字字段,但您传入的是文本类型。值得注意的是,从1.6开始,
Properties
有一个
.load()
方法接受
读取器
作为参数。这意味着你不必再写ISO了。。。