小编Aro*_*ion的帖子

Oracle JDBC charset和4000 char限制

我们试图将UTF-16编码的字符串存储到AL32UTF8 Oracle数据库中.

我们的程序完全适用于使用WE8MSWIN1252charset 的数据库.当我们尝试在使用AL32UTF8它的数据库上运行它时会到达java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column.

在下面的测试用例中,只要我们的输入数据不会太长,一切正常.

输入字符串可以超过4000个字符.我们希望保留尽可能多的信息,即使我们意识到必须切断输入.

我们的数据库表使用CHAR关键字定义(见下文).我们希望这可以让我们存储多达4000个字符集.可以这样做吗?如果是这样,怎么样?

我们尝试将String转换为UTF8使用ByteBuffer但没有成功.OraclePreparedStatement.setFormOfUse(...)也没帮我们出去.

切换到a CLOB不是一种选择.如果字符串太长则需要剪切.

这是我们目前的代码:

public static void main(String[] args) throws Exception {
    String ip ="193.53.40.229";
    int port = 1521;
    String sid = "ora11";
    String username = "obasi";
    String password = "********";

    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@" + ip + ":" + …
Run Code Online (Sandbox Code Playgroud)

java database oracle jdbc ojdbc

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

database ×1

java ×1

jdbc ×1

ojdbc ×1

oracle ×1