我们试图将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)