Varchar2的最大长度是4000,如果超过了4000,请使用LONG类型。

解决方案 »

  1.   

    infile.read(b,0,4000);已经控制读入4000byte了,不是吗?
      

  2.   

    我做了如下测试,字段设为varchar2(4000),可以通过啊,你检查一下你插入的内容先
    //File f=new File("c:\\temp\\12.doc");
    //FileInputStream infile = new FileInputStream(f);
    byte[] b=new byte[4000];
    for (int i=0;i<4000;i++ )
    {
    b[i]=1;
    }
    //infile.read(b,0,4000);
    String TVARCHAR=new String(b,"ASCII");
    System.out.println(TVARCHAR.length());
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    conn=DriverManager.getConnection(".......");
    stat=conn.createStatement();
    sql="insert into test(name) values('"+TVARCHAR+"')";
    System.out.println(sql);
    stat.executeQuery(sql);
      

  3.   

    估计插入的内容超过了4000
    也许你换成nvarchar后就不会了varchar(一个中文占2个字节)
    nvarchar(一个中文占一个字节)
      

  4.   

    测试发现只要
    byte[] b=new byte[4000];
    infile.read(b,0,4000);
    中读取的大小超过2000就报错。读取的文本文件中没有中文,全是英文,数字,空格,换行符。帮帮我!