//: CharacterStreamTest.java // author: yangwm 3/1 2008 import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class CharacterStreamTest { public static void main( String args[] ){ Connection conn = null ; PreparedStatement pstm = null; Statement stm = null ; ResultSet rs = null; try{ StringBuilder message = new StringBuilder("12345"); for (int i = 0; i < 152; i++) { message.append("abcdefghijklmnopqrstuvwxyz"); } message.append("Oracle Database 10g Express Edition 入门"); byte[] messageBytes = message.toString().getBytes(); int messageBytesLength = messageBytes.length; System.out.println("messageBytesLength=" + messageBytesLength); System.out.println("messageLength=" + message.toString().length()); InputStreamReader isr = new InputStreamReader(new java.io.ByteArrayInputStream(messageBytes)); // 注册 Driver . Class.forName( "oracle.jdbc.driver.OracleDriver" ); // 连接 数据库 ---> Connection String url = "jdbc:oracle:thin:@localhost:1521:XE" ; conn = DriverManager.getConnection(url , "system","123"); // 执行 SQL ------> PreparedStatement String sqlUpdate = "update users set phone=?,message=? where id=?"; pstm = conn.prepareStatement(sqlUpdate); pstm.setString(1, "800-800-888"); /* 使用该语句 pstm.setString(2, message.toString()); 所插入的字符串不能大于2000(用的数据库环境为Oracle 9i,如果用的数据库环境为Oracle 10g不能大于4000). 如果大于2000,可能会抛出java.sql.SQLException: Data size bigger than max size for this type: 2001 如果使用该语句 pstm.setCharacterStream(2, isr, messageLength); */ pstm.setCharacterStream(2, isr, 0); pstm.setLong(3, 1); int r = pstm.executeUpdate(); System.out.println( r + " rows effected" ); // 执行 SQL ------> Statement stm = conn.createStatement(); String sqlSelect = "select message from users where id=1" ; rs = stm.executeQuery( sqlSelect ); if ( rs.next() ){ String mess = rs.getString( 1 ); System.out.println( "=======================" ); System.out.println( "message " + mess ); System.out.println( "=======================" ); System.out.println( "message.length() " + mess.length() ); } }catch(Exception e){ e.printStackTrace(); }finally{ //5, 释放数据资源. if( rs != null ) try{ rs.close(); }catch(Exception e ){} if( stm != null ) try{ stm.close(); }catch(Exception e ){} if( pstm != null ) try{ pstm.close(); }catch(Exception e ){} if( conn != null ) try{ conn.close(); }catch( Exception e ){} } } } /* create table users ( id number primary key , username varchar2(50), password varchar2(20), phone varchar2(20), email varchar2(50), message varchar2(4000) ); create sequence users_seq; insert into users(id,username,password,phone,email,message) values(users_seq.nextval,'yangwm','12345','12345678','jxfzywm@163.com','Oracle Database 10g Express Edition 入门'); */
oracle字符超过2000怎么处理,解决字符串插入不能大于2000.(用的数据库环境为Oracle 9i; 10g不能大于4000)...
最新推荐文章于 2023-12-26 17:01:19 发布