请教高手!很急!

hfrank99frank 2005-05-20 05:39:32
该程序后台数据库是Access
我用的是sun.jdbc.odbc.JdbcOdbcDriver驱动,
String sqlstr = "INSERT INTO mp_report_volume (ipcc_code, volume_name,"+
"start_date, end_date, mpflow_code) VALUES ('"+pContractNumber+"', ?, ?, ?, ?)";

con.setAutoCommit(false);//关闭自动提交
pre = con.prepareStatement(sqlstr);//声明执行
//设置参数
pre.setString(1,hashtable.get(KEYDefine.VOLUME_NAME).toString());
pre.setDate(2,Date.valueOf(hashtable.get(KEYDefine.START_DATE).toString()));
pre.setDate(3,Date.valueOf(hashtable.get(KEYDefine.END_DATE).toString()));
pre.setString(4,hashtable.get(KEYDefine.FLOW_NUMBER).toString());
pre.executeUpdate();
由于字段ipcc_code 内容比较多,我把它的数据类型由文本 250改为备注类型。
Access帮助上查找的内容如下:
文本类型最多为 255 个字符或长度小于 FieldSize 属性的设置值。
备注类型 最多为 65,535 个字符(如果 Memo 字段是通过 DAO 来操作并且只有文本和数字 [非二进制数据] 保存在其中,则 Memo 字段的大小受数据库大小的限制)。
但是插入到数据库的内容还是做了截取。
如 当ipcc_code对应的参数pContractNumber内容为:500个字符的内容
执行完这段sql后存到数据库却为352个字符
,后面的148个字符全部截取掉了。当pContractNumber为391个字符时,数据库只保存了348个字符。
不知道为什么?请您不吝赐教
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
RomandAccessFile 2005-05-21
  • 打赏
  • 举报
回复
如果全是半角的字符,我想你写的SQL语句可能有点问题,不会使用"+"的形式来组成SQL语句吧,呵,如果是这样的话,那么只要有半角的引号,你是铁定要出错的,并且只插入引号前的部分,


如果不是的话,我只能说抱歉了,因为SQL的备注类,基本上是不会出界的,我有三页的东东插入里边也没有问题,,何况是你那点东东
hfrank99frank 2005-05-21
  • 打赏
  • 举报
回复
全部是半角字符(中间没有空格),再取出来就少了很多字符。而且存到数据库就少了右边的内容。
原来ipcc_code内容少于256字符时,我用文本类型的字段时,没有这个现象。后来
由于ipcc_code内容超过256个字符时,存储的内容就少了右边的内容,即使更改数据
类型为备注的,也是一样。真是很疑惑!!!
cuilichen 2005-05-20
  • 打赏
  • 举报
回复
看看字符的编码,还有就是字符串的后面是不是空格啊?

最好是再取出来,看看还原来的是不是一样。
RomandAccessFile 2005-05-20
  • 打赏
  • 举报
回复
ipcc_code,这个字符是不是有空格,是全角还是半角,还有,,你再取出的时候,,内容变了吗,
是少了后边的还是?
如果你存在有特殊的字符是不行了,你要转换的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧