各位帮帮忙啊
在提交之前我让它控制在5000字以内
if (theform.content.value.length>5000) 
{
alert ("内容太长了,请控制5000字以内");
return false; 
}提交过来后插入,就提示错误
LONG类型不能存下5000字吗?

解决方案 »

  1.   

    各位帮帮忙啊
    在提交之前我让它控制在5000字以内
    if (theform.content.value.length>5000) 
    {
    alert ("内容太长了,请控制5000字以内");
    return false; 
    }提交过来后插入,就提示错误
    LONG类型不能存下5000字吗?
      

  2.   

    真的是很急啊
    大家帮帮忙啊,告诉我LONG类型能存下5000字吗?
      

  3.   

    那是String类型的变量存不下这么大的值?
    我在程序中用了
    String rcontent=request.getParameter("content");然后往数据库里插入rcontent变量的
    是这个rcontent这块不行吗?
      

  4.   

    用的是什么版本的Oracle?Oralce8i以后Long是2G
      

  5.   

    是Oracle8i
    我怀疑是不是String rcontent=request.getParameter("content");
    这里的问题?
      

  6.   

    是Oracle8i
    我怀疑是不是String rcontent=request.getParameter("content");
    这里的问题?
      

  7.   

    long类型的数据要用preparestatement用流插入的
      

  8.   

    先把字符串转化为流的形式 String rcontent=new String(request.getParameter("content").getBytes("ISO-8859-1"),"gb2312");
    byte[]  contentBytes  =  content.getBytes("GBK");
    ByteArrayInputStream  contentStream  =  new  ByteArrayInputStream(pic);
             InputStreamReader  contentReader  =  new  InputStreamReader(baisss,"GBK");然后就getConnection,用PreparedStatement:
            Connection conn = XXXXXXXX;
            PreparedStatement pstmt=conn.prepareStatement("instert into XXX (ID,CONTENT) values (?,?)");
            pstmt.setInt(1,ID);
            pstmt.setCharacterStream(2,contentReader,contentStream.length);
            pstmt.execute();
            pstmt.close();        OK了.
      

  9.   

    上面那个有些地方有点错,看这个吧,已改正先把字符串转化为流的形式
    String rcontent=new String(request.getParameter("content").getBytes("ISO-8859-1"),"gb2312");
    byte[]  contentBytes  =  rcontent.getBytes("GBK");
    ByteArrayInputStream  contentStream  =  new  ByteArrayInputStream(contentBytes);
             InputStreamReader  contentReader  =  new  InputStreamReader(contentStream,"GBK");然后就getConnection,用PreparedStatement:
            Connection conn = XXXXXXXX;
            PreparedStatement pstmt=conn.prepareStatement("instert into XXX (ID,CONTENT) values (?,?)");
            pstmt.setInt(1,ID);
            pstmt.setCharacterStream(2,contentReader,contentBytes.length);
            pstmt.execute();
            pstmt.close();        
      

  10.   

    非常的感谢!!不过还是没整明白
    PreparedStatement pstmt=conn.prepareStatement("instert into XXX (ID,CONTENT) values (?,?)");   //这里问号替换吗?
    pstmt.setInt(1,ID);           //ID是数据库里的ID字段名吗?插入1?
    pstmt.setCharacterStream(2,contentReader,contentBytes.length);
            //这里2代表什么?还没碰过这样的问题,见谅
      

  11.   

    ID,CONTENT是字段名字
    两个问号分别指代两个需输入的参数.可以使用setxxx方式设置这些参数的值,设置第一个参数序号为1第二个为2  
    1和2后面的东西(例如pstmt.setInt(1,ID); )id代表你要插入的数值
      

  12.   

    values (?,?)");   能否在具体点我的代码如下:
    <% 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    String url="jdbc:oracle:thin:@10.1.1.1:1521:orcl"; 
    Connection conn=DriverManager.getConnection(url,"test","test"); String rcontent=new String(request.getParameter("content").getBytes("ISO-8859-1"),"gb2312"); 
    byte[] contentBytes = rcontent.getBytes("GBK"); 
    ByteArrayInputStream contentStream = new ByteArrayInputStream(contentBytes); 
    InputStreamReader contentReader = new InputStreamReader(contentStream,"GBK"); int rid=50; PreparedStatement pstmt=conn.prepareStatement("instert into syt_zp_article(ID,CONTENT) values (setInt(rid),setString(rcontent))"); 
    pstmt.setInt(1,rid); 
    pstmt.setCharacterStream(2,contentReader,contentBytes.length); 
    pstmt.execute(); 
    pstmt.close(); 
    %> 总提示错误:invalid SQL statement 
      

  13.   

    大家救救我啊!!我给它换成:
    PreparedStatement pstmt=conn.prepareStatement("instert into tabs(id,content) values ('"+rid+"','"+rcontent+"')");也还是不行,还 是invalid SQL statement ??
    究竟应该怎么写?
      

  14.   

    values (setInt(rid),setString(rcontent))这个不行吧,你就用问号然后用setxxx的方法执行呀. PreparedStatement pstmt=conn.prepareStatement("instert into syt_zp_article(ID,CONTENT) values (?,?)");//这儿就是问号,代表这儿是输入的参数然后用set方法设值
            pstmt.setInt(1,rid);
            pstmt.setCharacterStream(2,contentReader,contentBytes.length);
      

  15.   

    改了,还是一样的错误:invalid SQL statement PreparedStatement pstmt=conn.prepareStatement("instert into syt_zp_article(ID,CONTENT) values (?,?)"); 
    pstmt.setInt(1,rid); 
    pstmt.setCharacterStream(2,contentReader,contentBytes.length); 
    pstmt.execute(); 
    pstmt.close(); 
      

  16.   

    不能是别的地方错了吧?
    我给它用Statement stmt=...
    然后插入 测试的话能插入数据的感觉还是
    String rcontent=new String(request.getParameter("content").getBytes("ISO-8859-1"),"gb2312"); 
    byte[] contentBytes = rcontent.getBytes("GBK"); 
    ByteArrayInputStream contentStream = new ByteArrayInputStream(contentBytes); 
    InputStreamReader contentReader = new InputStreamReader(contentStream,"GBK"); int rid=50; PreparedStatement pstmt=conn.prepareStatement("instert into syt_zp_article(ID,CONTENT) values (?,?)"); 
    pstmt.setInt(1,rid); 
    pstmt.setCharacterStream(2,contentReader,contentBytes.length); 
    pstmt.execute(); 
    pstmt.close(); 这一块的问题
      

  17.   

    不是,还没解决。我用statement测试是看数据库连接上没有,插入的是固定的值
    不是这种转化成字符流形式的
    后面这种还是出错。很是感谢!!
      

  18.   

    哈哈,都是我的错,insert写成了instert.....呵呵,不过jianghua008(杀猪的)你也太懒了,这么点代码还要Ctrl+c。现在看看,没问题了吧。
      

  19.   

    一切OK,感谢vangies
    万二分的感谢!再感谢!!也感谢大家我也没想到是在这么个小地方被绊着了,明明就是invalid SQL statement 了
    还是没把这个instert给找出来,见笑见笑:)
      

  20.   

    xixi,MM得分比偶多,不平衡:-(