13

我有一种情况,我需要从 String 制作 Clob 对象。问题是我不能在该方法中使用 ConnectionManager。

我需要一些实用程序,例如

 public Clob getClob(String data){

 }

谁能告诉我怎么做这个。

我也有oralce.sql.CLOB。但是它需要 Connection 来创建对象。

4

8 回答 8

23

那些仍在寻找替代答案的人,可以创建一个 Clob 对象而无需连接对象,如下所示。

Clob myClob = new javax.sql.rowset.serial.SerialClob(stringData.toCharArray());
于 2018-02-27T08:54:37.030 回答
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);
}
于 2012-12-14T16:03:13.730 回答
9

试试这个 :

OracleConnection conn;  // initialize this first

CLOB clob = conn.createClob();

public Clob getClob(String data){

    return clob.setString(position, data);
}
于 2012-07-11T07:13:07.933 回答
2

为了初始化此处其他答案中提到的 OracleConnection,如果您正在为 java 存储过程执行此操作并且连接到存储该过程的数据库,则可以像这样初始化 Connection:

Connection conn = DriverManager.getConnection("jdbc:default:connection:");

并且需要此导入:

import oracle.jdbc.driver.OracleConnection;
于 2018-07-25T10:07:08.153 回答
1

如果您使用的是 spring boot 并且您只有一个 JdbcTemplate obj,您可以使用以下方法获得 Oracle 连接:

private JdbcTemplate  jdbcTemplate;   // or NamedParameterJdbcTemplate 
Clob myClob = this.jdbcTemplate.getJdbcTemplate().getDataSource().getConnection().createClob();
于 2020-02-10T11:58:27.147 回答
0

如果您正在寻找一个机会来创建一个[N]Clob没有连接的连接,您可以NonContextualLobCreator从 Hibernate 项目中使用。以下示例显示了NCLob使用字符串创建

String xml = "my blob content";
NClob clob = NonContextualLobCreator.INSTANCE.createNClob(xml);
entity.setXmlclob);

至少从 Hibernate 4.2(可能更早)开始可用。

于 2019-11-24T16:20:52.230 回答
0

在我这边,我使用

Clob generateProxy(String string)

import org.hibernate.engine.jdbc.ClobProxy;
于 2020-01-29T22:04:11.137 回答
0

我有一个像你一样的问题,我需要在一个字段中存储一个 JSON。您不必将 BLOB 或 CLOB 用作 java 对象,但您可以将其存储为一个。

总结一下我的答案,如果您使用的是ORACLE数据库(这是一个总是会导致说其语言出现问题的数据库),请使用以下格式作为指南或最佳实践,它基于 oracle 文档本身来解决您的问题:

@Lob @Basic(fetch=LAZY)
@Column(name="REPORT")
protected String report;

如您所见,用于整理数据的变量位于字符串中(无需转换),但它将存储为 LOB。

祝你好运!

于 2021-03-28T05:58:44.940 回答