【发布时间】:2015-06-10 15:45:59
【问题描述】:
我正在开发一个旧的 Java 应用程序,但我对这种在 Oracle 数据库上执行简单插入查询的方法有一些问题:
private boolean insertFlussoXmlsdi(DBOperatore op, String numeroFattura, String dataFattura, String fatturaXml) {
StringBuffer query = new StringBuffer();
query.append("INSERT INTO FLUSSO_XMLSDI (NUMERO_FATTURA, DATA_EMISSIONE, XML) VALUES (");
query.append(numeroFattura);
query.append(", date'");
query.append(dataFattura);
query.append("', '");
query.append(fatturaXml);
query.append("')");
try {
Statement stmt = op.getConnessione().createStatement();
stmt.execute(query.toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
TraceLog.scrivi("INSERIMENTO FATTURA", "ERRORE inserimento fattura con numero fattura: " + numeroFattura, false, TraceLog.lowConsole + TraceLog.highTrace + TraceLog.highLog);
return false;
}
TraceLog.scrivi("INSERIMENTO FATTURA", "Inserimento fattura con numero fattura: " + numeroFattura, false, TraceLog.lowConsole + TraceLog.highTrace + TraceLog.highLog);
return true;
}
问题是 String fatturaXml 参数代表一个 XML 文件,而且它非常大。因此,当执行上一个查询时,我发现抛出了这个异常:
java.sql.SQLException: ORA-01704: string literal too long
如何解决这个问题并正确插入记录?
Tnx
【问题讨论】:
-
你的表结构?
-
FLUSSO_XMLSDI中的xml列的数据类型是什么?为什么要使用文字而不是使用绑定变量来构建 SQL 语句?这是你可以改变的吗? -
您是否将其存储在 varchar 类型的字段中?如果您可以访问数据库,则可以使用
CLOB数据类型来存储 xml 文件,而不是 varchar 以防大文件
标签: java sql oracle oracle11g ora-01704