既然当成文本插入,字段改成varchar或text不久得了?
在oracle中,没种子端类型都有一定的长度范围,长度太大肯定不行。
而且,一条记录也有长度限制,好像是8000多byte。

解决方案 »

  1.   

    要用流方式保存,String 类型 jdbc 不支持 大数据。
      

  2.   

    to wjfxiao(卧龙) 字段改成varchar 才能寸多少汉字啊。
     to cayu(中原) 如何保存,举个例子,谢谢。
      

  3.   

    desc news 
    TITLE                          NOT NULL VARCHAR2(80)
    CONTENT                        NOT NULL LONG<%String  sSql  =  "INSERT  INTO  news   VALUES(?,?)";PreparedStatement   pstmt  =  con.prepareStatement(sSql);
      String  title=request.getParameter("title");
      String  content=request.getParameter("content");
      byte[]  pic  =  content.getBytes("8859_1");
      ByteArrayInputStream  baisss  =  new  ByteArrayInputStream(pic);
      InputStreamReader  bais  =  new  InputStreamReader(baisss,"8859_1");  pstmt.setString(1,title);
      pstmt.setCharacterStream(2,bais,pic.length);
      pstmt.execute();
    %>
      

  4.   

    to zhu_liping(zz) 
    非常感谢你的代码:我将字符插如了进去,可在读出时中问乱马,请问怎么解决?
    代码如下:插入时:
    <%   
     DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
     Connection conn = DriverManager.getConnection("java:oracle:thin:@srv:1521:srv","yp","yp");
     String sql= "INSERT  INTO  speedfaw.news VALUES(?,?)";
     PreparedStatement pstmt=conn.prepareStatement(sql);
     String  title=request.getParameter("title");
     String  content=request.getParameter("content");
     byte[]  pic  =  content.getBytes("8859_1");
     ByteArrayInputStream  baisss  =  new  ByteArrayInputStream(pic);
     InputStreamReader  bais  =  new  InputStreamReader(baisss,"8859_1");  pstmt.setString(1,title);
      pstmt.setCharacterStream(2,bais,pic.length);
      pstmt.execute();
      pstmt.close();
      conn.close();
       %>读出时:
    <%    
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection("java:oracle:thin:@srv:1521:srv","yp","yp");
    Statement stmt = conn.createStatement();
    String sql="select title,content from speedfaw.news";
    ResultSet rs=stmt.executeQuery(sql);
     if (rs.next())
           {
            String title = rs.getString("title");
            byte [] blocco = rs.getBytes("content");
            //response.setContentType("image/jpeg");
            //ServletOutputStream op = response.getOutputStream();
            for(int i=0;i<blocco.length;i++)
            {
                out.write(blocco[i]);
            }
             } 
           rs.close();
     
     conn.close();
     
     
     %>
    马上给分,别急,呵呵。
      

  5.   

    能不能这样:
    byte [] blocco = rs.getBytes("content");
    String strBlocco = new String(blocco.getBytes("iso-8859-1"),"gb2312");//如果不对,就用String strBlocco = new String(blocco);
    out.println(strBlocco);
      

  6.   

    to li_yadan(布狮子) 
    你的 第一种方式我试了,报错,因为 blocco 没有 getBytes 方法。
    第二种也试了,不行,还是????。。
    gz!
      

  7.   

    插入的时候改成这样:  String  content=request.getParameter("content");
      String temp = new String(content.getBytes("GBK","ISO8859-1");
      byte[]  pic  =  temp.getBytes("8859_1");睹的时候改为:
    String c = new String(blocco,"GBK");
    out.println(c);
    这样试试!
      

  8.   

    to wjfxiao(卧龙) 
    你的方法也不行,出现的码更乱,呵呵,
    你看看:????????锛????? 锛???????Weblogic 5.1??mysql ?????篓掳?篓锛???篓锛??weblogic?篓锛????POOL?? ??锛??锛??????????? servlet 锛??锛????????????锛????????????? mysql ?篓锛????JDBC???锛????????MYSQL?? ?篓锛??????
      

  9.   

    String temp = new String(content.getBytes("GBK","ISO8859-1");这行写错了!少了括号,不只你加上没?
    另外:你的参数是从另一个页面得到的,他应该已经是unicode编码了,反正就是中文问题, 你在插入和渡出试缓缓方法测一下。
    还有,用text类型我存取过3000多的汉字,不能满足你的要求吗?
      

  10.   

    记错了,我以前用的是SQL SERVER!
      

  11.   

    to i_yadan(布狮子) :
     我的代码是显示大文本。现在的问题是英文正常,中文出现乱码,
      

  12.   

    我贴的还不够完整?这次我把三个件全贴出来testform.jsp<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*,java.util.*,oracle.jdbc.driver.*" %>
    <html>
    <head>
    <title>Untitled</title>
    </head><body><form action="testlong.jsp" method="post">
    <input type="text" name="title" >
    <textarea cols="47" rows="17" name="content"></textarea>
    <input type="submit" name="submit1">
    </form> </body>
    </html>testlong.jsp(写入的代码)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*,java.io.*,java.util.*,oracle.jdbc.driver.*" %>
    <html>
    <head>
    <title>testlong</title>
    </head><body>
    <%   
     DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
     Connection conn = DriverManager.getConnection("java:oracle:thin:@srv:1521:srv","yp","yp");
     String sql= "INSERT  INTO  speedfaw.news VALUES(?,?)";
     PreparedStatement pstmt=conn.prepareStatement(sql);
     String  title=request.getParameter("title");
     String  content=request.getParameter("content");
     
    // byte[]  pic  =  content1.getBytes("8859_1");
     String temp = new String(content.getBytes("GB2312"),"8859_1");
     byte[]  pic  =  temp.getBytes("8859_1"); ByteArrayInputStream  baisss  =  new  ByteArrayInputStream(pic);
     InputStreamReader  bais  =  new  InputStreamReader(baisss,"8859_1"); pstmt.setString(1,title);
     pstmt.setCharacterStream(2,bais,pic.length);
     pstmt.execute();
     pstmt.close();
     conn.close();
       %>
    </body>
    </html>testlong1.jsp(读的代码)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*,java.io.*,java.util.*,oracle.jdbc.driver.*" %>
    <html>
    <head>
    <title>testlong1</title>
    </head><body>
    <%    
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection("java:oracle:thin:@srv:1521:srv","yp","yp");
    Statement stmt = conn.createStatement();
    String sql="select title,content from speedfaw.news";
    ResultSet rs=stmt.executeQuery(sql);
     //int c;
     if (rs.next())
           {
            String title = rs.getString("title");
            byte [] blocco = rs.getBytes("content");
    out.println(blocco.length);
    //String strBlocco = new String(blocco.getBytes("iso-8859-1"),"gb2312");
    String c = new String(blocco,"GB2312");
             out.println(c);         } 
           rs.close();
     
     conn.close();
     
     
     %>
    </body>
    </html>
      

  13.   

    你是用的long类型?
    long可以直接写出来的
    content=rs.getString("content");
    out.print(content);
      

  14.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*,java.util.*,oracle.jdbc.driver.*" %>
    <html>
    <head>
    <title>Untitled</title>
    </head><body><form action="testformin.jsp" method="post">
    <input type="text" name="title" >
    <textarea cols="47" rows="17" name="content"></textarea>
    <input type="submit" name="submit1">
    </form> </body>
    </html>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*,java.io.*,java.util.*,oracle.jdbc.driver.*" %>
    <html>
    <head>
    <title>testlong</title>
    </head><body>
    <%   
    // DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    // Connection conn = DriverManager.getConnection("java:oracle:thin:@srv:1521:srv","yp","yp");try
    { String  dbdriver = "oracle.jdbc.driver.OracleDriver";
     String  dbname = "jdbc:oracle:thin:@sgh:1521:sght";
     Connection conn=DriverManager.getConnection(dbname,"sgh","sgh");
     String sql= "INSERT  INTO  w_test VALUES(?,?)";
     PreparedStatement pstmt=conn.prepareStatement(sql);
     String  title=request.getParameter("title");
     String  content=request.getParameter("content"); String tp = new String(title.getBytes("ISO8859-1"),"GBK");
     out.print(tp);
     String con = new String(content.getBytes("ISO8859-1"),"GBK");
     
    // byte[]  pic  =  content1.getBytes("8859_1");
     byte[]  pic  =  con.getBytes("GBK"); ByteArrayInputStream  baisss  =  new  ByteArrayInputStream(pic);
     InputStreamReader  bais  =  new  InputStreamReader(baisss,"GBK"); pstmt.setString(1,tp);
     pstmt.setCharacterStream(2,bais,pic.length);
     pstmt.execute();
     pstmt.close();
     conn.close();
     }
     catch(Exception e)
     {
        e.printStackTrace();
     }  %>
     <script language="javaScript">
     
     </script>
    </body>
    </html>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <%@ page contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*,java.io.*,java.util.*,oracle.jdbc.driver.*" %>
    <html>
    <head>
    <title>testlong1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head><body>
    <%    
    //DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    //Connection conn = DriverManager.getConnection("java:oracle:thin:@srv:1521:srv","yp","yp");
    String  dbdriver = "oracle.jdbc.driver.OracleDriver";
    String  dbname = "jdbc:oracle:thin:@sgh:1521:sght";
    Connection conn=DriverManager.getConnection(dbname,"sgh","sgh");
    Statement stmt = conn.createStatement();
    String sql="select title,content from w_test";
    ResultSet rs=stmt.executeQuery(sql);
     //int c;
     while(rs.next())
           {
             String title = rs.getString("title");
             String t = new String(title.getBytes("ISO8859-1"),"GBK");
         
    String tr = rs.getString("content");
    out.println(tr);         } 
           rs.close();
     
     conn.close();
     
     
     %>
    </body>
    </html>
      

  15.   

    非常感谢zhu_liping(zz) wjfxiao(卧龙) ,给分!~