我有这段代码
String sql = "insert into colortable (string, color, cid) values (?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql,keyProperties.toArray(new String[0]));
ps.executeBatch();
final ResultSet rst = ps.getGeneratedKeys();
while (rst.next()) {
final BigDecimal bigDecimal = rst.getBigDecimal(1);
if (bigDecimal != null) {
ids.add(bigDecimal.intValueExact());
}
}
当代码到达 rst.next 时,我获得以下异常。
Caused by: java.sql.SQLException: Unsupported feature
at oracle.jdbc.driver.OracleStatement.fetchDmlReturnParams(OracleStatement.java:4959) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.OracleReturnResultSet.next(OracleReturnResultSet.java:63) ~[ojdbc6.jar:11.2.0.4.0]
我发现问题出现在ojdbc驱动程序的这一部分。
if (!this.statement.returnParamsFetched) {
this.statement.fetchDmlReturnParams();
this.statement.setupReturnParamAccessors();
}
特别是函数 this.statement.fetchDmlReturnParams(); 未实现。
现在我的问题是避免调用此函数,特别是returnParamFetched可以设置为true吗?
答案 0 :(得分:1)
我的应用程序真正执行的代码是
class Program
{
private static string str1 { get; set; }
private static string str2 { get; set; }
private static string str3 { get; set; }
private static string ConceptOrder { get; set; }
static void Main(string[] args)
{
str1 = "string1";
str2 = "string2";
str3 = "string3";
ConceptOrder = "2, 3, 1";
Console.WriteLine(ConceptValues(ConceptOrder));
// output: string2 string3 string1
Console.ReadKey(true);
}
}
我创建了一个测试用例来测试这个代码,我尝试使用不同的ojdbc,我发现最新的ojdb8解决了这个问题。