现在ORACLE已经不提倡用LONG字段了,而是用大对象类型(LOB),分为(CLOB、BLOB、BFILE)类型,如果你是存的文本,就用CLOB,以下为在oracle里的存取 示例: 一、建表 create table mylob(num number,vlob clob);--这时vlob为大字段类型变量,一个字段可以 存4G 二、插入值 insert into mylob values(1,'fsajfowregsajgisajfksdajkfjsdajoifjsafnndsalkf'); insert into mylob values(2,'fxczjvoijwmtjdfjnkkfksajfsakjfjsdajflkjsafjks'); 三、存取 declare loc clob; num number; offset number; v_out varchar2(10); begin num:=7; offset:=3; select vlob into loc from mylob where num=2; dbms_lob.read(loc,num,offset,v_out);--大字段/结束字符/开始字符/输出字符串 dbms_output.put_line('The out put is : '||v_out);
liwenlong(小心) 你好。数据库中已经定义为clob 但是insert时就出错? 录入语句如下:String sql="insert into news(id,title,body)values(id.nextval,'"+title+"','"+body+"')"; PreparedStatement stm=con.prepareStatement(sql); stm.executeUpdate();body是word中的一张表(一页纸)错误如下。如大侠能解决,原送100分 java.sql.SQLException: ORA-01704: string literal too long at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:579) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1894) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1094) at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2132) at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2015) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2877) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:608) at jsp_servlet._news.__savenew._jspService(__savenew.java:282) at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
to: xuyang821225(CSDN账号) ( ) 信誉:100 用settring(1,"")改变这样好些 还是报错,只不过错误变了变成如下:错误 java.sql.SQLException: pn'咜d{媱'<: 82415 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:147) at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:2460) at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java:1190) at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:1610) at jsp_servlet._news.__savenew._jspService(__savenew.java:283) at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
能考段代码上来吗?
看一下这个,希望能对你有所帮助
示例:
一、建表
create table mylob(num number,vlob clob);--这时vlob为大字段类型变量,一个字段可以 存4G
二、插入值
insert into mylob values(1,'fsajfowregsajgisajfksdajkfjsdajoifjsafnndsalkf');
insert into mylob values(2,'fxczjvoijwmtjdfjnkkfksajfsakjfjsdajflkjsafjks');
三、存取
declare
loc clob;
num number;
offset number;
v_out varchar2(10);
begin
num:=7;
offset:=3;
select vlob into loc from mylob where num=2;
dbms_lob.read(loc,num,offset,v_out);--大字段/结束字符/开始字符/输出字符串
dbms_output.put_line('The out put is : '||v_out);
录入语句如下:String sql="insert into news(id,title,body)values(id.nextval,'"+title+"','"+body+"')";
PreparedStatement stm=con.prepareStatement(sql);
stm.executeUpdate();body是word中的一张表(一页纸)错误如下。如大侠能解决,原送100分
java.sql.SQLException: ORA-01704: string literal too long at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:579)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1894)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1094)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2132)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2015)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2877)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:608)
at jsp_servlet._news.__savenew._jspService(__savenew.java:282)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
用settring(1,"")改变这样好些 还是报错,只不过错误变了变成如下:错误
java.sql.SQLException: pn'咜d{媱'<: 82415
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.ttc7.TTCItem.setArrayData(TTCItem.java:147)
at oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java:2460)
at oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java:1190)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:1610)
at jsp_servlet._news.__savenew._jspService(__savenew.java:283)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)