我有一种情况需要从String中创建Clob对象。 问题是我不能在该方法中使用ConnectionManager。
我需要像
这样的实用程序 public Clob getClob(String data){
}
任何人都可以告诉我如何才能做到这一点。
我也有oralce.sql.CLOB。但是它需要Connection才能创建对象。
答案 0 :(得分:10)
引发警告:Clob未初始化。
您需要OracleConnection才能使用Oracle数据库创建Clob。
OracleConnection conn; // initialize this first
Clob myClob = conn.createClob();
private OracleConnection conn = null;
public void setConnection( OracleConnection conn )
{
this.conn = conn;
}
void setClob( String cookie ) throws SQLException
{
Clob myClob = conn.createClob();
myClob.setString( 1, cookie);
}
答案 1 :(得分:6)
那些仍在寻找替代答案的人,可以在不需要连接对象的情况下创建Clob对象,如下所示。
Clob myClob = new javax.sql.rowset.serial.SerialClob(stringData.toCharArray());
答案 2 :(得分:5)
试试这个:
OracleConnection conn; // initialize this first
CLOB clob = conn.createClob();
public Clob getClob(String data){
return clob.setString(position, data);
}
答案 3 :(得分:1)
为了初始化此处其他答案中提到的OracleConnection 并且如果您正在为Java存储过程执行此操作 并且连接到存储该过程的数据库, 然后可以像这样初始化Connection:
Connection conn = DriverManager.getConnection("jdbc:default:connection:");
并且此导入是必需的:
import oracle.jdbc.driver.OracleConnection;
答案 4 :(得分:1)
如果您使用的是Spring Boot,并且只有JdbcTemplate obj,则可以使用以下方式获得Oracle连接:
private JdbcTemplate jdbcTemplate; // or NamedParameterJdbcTemplate
Clob myClob = this.jdbcTemplate.getJdbcTemplate().getDataSource().getConnection().createClob();
答案 5 :(得分:0)
如果您正在寻找机会创建没有连接的[N]Clob
,则可以在Hibernate项目中使用NonContextualLobCreator
。以下示例显示了使用字符串创建NCLob
String xml = "my blob content";
NClob clob = NonContextualLobCreator.INSTANCE.createNClob(xml);
entity.setXmlclob);
至少从Hibernate 4.2(可能更早)开始可用。
答案 6 :(得分:0)
我一边使用
Clob generateProxy(String string)
来自
import org.hibernate.engine.jdbc.ClobProxy;
答案 7 :(得分:0)
我遇到了与您类似的问题,我需要在字段中存储 JSON。 您不必将 BLOB 或 CLOB 用作 java 对象,但您可以将其存储为一个。
总结我的答案,如果您正在使用 ORACLE 数据库(这是一个总是会导致语言问题的数据库),请使用波纹管格式作为指南或基于 oracle 文档本身的最佳实践来解决您的问题:
@Lob @Basic(fetch=LAZY)
@Column(name="REPORT")
protected String report;
如您所见,您用来处理数据的变量在字符串中(无需转换),但它将存储为 LOB。
祝你好运!