JDBC的字符串长度问题,请各位帮助! 你的数据库字段定义的长度超过了,java中的String长度是没有限制的(受系统限制)。检查检查你的数据库定义。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据库我用的是oracle,请问留言部分我应该用什么?为什么oracle没有SQL中的TEXT的字段类型? oracle中存储大型字符串需要用clob类型。当然也有long,不过现在更倾向于clob。存储的时候需要特殊sql操作,把字符串转换为ascii. 你可以使用NVARCHAR2,不过最大长度只能是4000,也就是可以存4000个字符或是汉字了。NVARCHAR2(4000),这是变长字符串,不是定长的,也就是你存1个汉字,它就占用一个汉字的长度。 Oracle 没有SQL Server中的TEXT的字段类型,但是你可以用可变长VCHAR来定义,最大为4000。实际上和TEXT是相同的,也可以用NCHAR型可容纳更多并且支持NLS的字段。 to ligar: 如果用clob,应该怎么操作? 能否给个简单的例子? 例如:1、建表:create table plan (id number not null ;title varchar(80) not null ;body clob null);2、将jsp页面参数通过request赋给javaBean实例planBean属性中 ,javaBean处理如下private void insert(HttpServletRequest request, HttpServletResponse response) { try {oJdbc.getConnection();oJdbc.beginTran(); String title = request.getParemeter("paremeter_title") ;String body = request.getParemeter("paremeter_body") ;String strSql = "insert plan into (id,title,body)" ; strSql +=" "+"value(0,'"+title+"','"+body+"')";oJdbc.getStatement().executeUpdate(strSql);oJdbc.commit;}catch(SQLException ex){ oJdbc.rollback(); se.printStackTrace();}finally{ oJdbc.closeConnection();} 问题依旧呀,string literal too long:executeUpdate("insert plan too (id,title,body) values (0,........);解决不了呀!帮帮忙!!!好象只能用clob,但我不会用这个类,怎么把string转进clob中? sql server用textoracle用LONG VARCHAR 用clob吧,很快就能搞定的,代码参考:/* * 作者:杨圣发 * 申明:如果转载,请保留作者名称 */java.sql.PreparedStatement pstmt = null; ResultSet rs = null; String query = ""; conn.setAutoCommit(false); query = "insert into plan values('001','test',empty_clob())"; //body 是clob字段java.sql.PreparedStatement pstmt = conn.prepareStatement(query); pstmt.executeUpdate();pstmt = null query = "select body from clobtest_table where id = '001' for update"; pstmt = con.prepareStatement(query) rs= pstmt.executeQuery(); oracle.sql.CLOB clobBody = null; if(rs.next()){ clobBody = (oracle.sql.CLOB)rs.getClob(1); } Writer wr = clobtt.getCharacterOutputStream(); wr.write(strtmp); wr.flush(); wr.close(); rs.close(); con.commit(); long varchar也有限制?setString()报错,Data size bigger than max size of this type. 如果我从post得到数据,如何转变成clob??String body = request.getParameter("post_body");? (String)body -> Clob(clobBody)? 如何把字符串"220.45.100"转变成Color? 请教JtextField批量赋值给一个对象的问题 二叉树的递归建立问题。 谁帮帮我,快疯了! Jsp邮件发送问题 用Java怎么实现? 关于JAVA多线程序里的问题。Thread.currentThread问题 送分~~~~~~~~~停止线程的方法。 高手帮忙,高分相赠! 关于java的格式化输出 初学java,请教一个很菜的问题? 请问如何屏蔽网页中代码?如何使用户无法从IE保存网页文件?
为什么oracle没有SQL中的TEXT的字段类型?
如果用clob,应该怎么操作?
能否给个简单的例子?
1、建表:
create table plan (
id number not null ;
title varchar(80) not null ;
body clob null
);2、将jsp页面参数通过request赋给javaBean实例planBean属性中 ,javaBean处理如下
private void insert(HttpServletRequest request, HttpServletResponse response) {
try {
oJdbc.getConnection();
oJdbc.beginTran();
String title = request.getParemeter("paremeter_title") ;
String body = request.getParemeter("paremeter_body") ;
String strSql = "insert plan into (id,title,body)" ;
strSql +=" "+"value(0,'"+title+"','"+body+"')";
oJdbc.getStatement().executeUpdate(strSql);
oJdbc.commit;
}catch(SQLException ex){
oJdbc.rollback();
se.printStackTrace();
}finally{
oJdbc.closeConnection();
}
executeUpdate("insert plan too (id,title,body) values (0,........);解决不了呀!
帮帮忙!!!
好象只能用clob,但我不会用这个类,怎么把string转进clob中?
/*
* 作者:杨圣发
* 申明:如果转载,请保留作者名称
*/
java.sql.PreparedStatement pstmt = null;
ResultSet rs = null;
String query = "";
conn.setAutoCommit(false);
query = "insert into plan values('001','test',empty_clob())";
//body 是clob字段
java.sql.PreparedStatement pstmt = conn.prepareStatement(query); pstmt.executeUpdate();
pstmt = null
query = "select body from clobtest_table where id = '001' for update";
pstmt = con.prepareStatement(query)
rs= pstmt.executeQuery();
oracle.sql.CLOB clobBody = null;
if(rs.next())
{
clobBody = (oracle.sql.CLOB)rs.getClob(1);
}
Writer wr = clobtt.getCharacterOutputStream();
wr.write(strtmp);
wr.flush();
wr.close();
rs.close();
con.commit();
setString()报错,
Data size bigger than max size of this type.
String body = request.getParameter("post_body");? (String)body -> Clob(clobBody)?