如何在JPD中的PreparedStatement中使用setClob()

use*_*905 5 java

以下是信息:

  1. 我有一个字符串
  2. 我想在一个表中插入一个记录,其中String的数据类型为CLOB.
  3. 我想使用setClob()preparedstatement的方法.

所以我的问题是如何Clob从这个String 创建一个对象,以便我可以使用setClob()方法.

提前谢谢,Naveen

Evg*_*eev 8

如果要将字符串写入CLOB列,请使用PreparedStatement.setString.

如果您想知道如何从String创建CLOB,那就是它

    Clob clob = connection.createClob();
    clob.setString(1, str);
Run Code Online (Sandbox Code Playgroud)


Vis*_*uth 6

您可以按如下方式从连接对象创建clob

Connection con = null;// write code to make a connection object
Clob clob = con.createClob();
String str = "this is a stirng";
clob.setString(1, str );

PreparedStatement ps = null;// write code to create a prepared statement
ps.setClob(4, clob);
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试以下替代代码:

//alternative way       
String str = "this is a stirng";
ByteArrayInputStream inputStream = new ByteArrayInputStream(str.getBytes());
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

int parameterIndex = 1;
PreparedStatement ps = null;// write code to create a prepared statement
ps.setClob(parameterIndex, inputStreamReader);
Run Code Online (Sandbox Code Playgroud)


TA *_*yen 2

对于 CLOB 来说,它已经是 String 了。所以,只需使用 .setString() 就可以了。关于 ORACLE jdbc 的一件事是,如果您使用它,它就像 CLOB INPUT 参数是语句中的最后一个参数,尤其是在处理大量数据时。

例子:

INSERT INTO MY_TABL (NUM_COL, VARC_COL, VARC_COL, TS_COL, CLOB_COL) 
   VALUES(?,?,?,?,?);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,CLOB_COL 是 CLOB 类型,并且应该位于最后,以便当您执行 .setString(5) 时,5 是最后一个索引。