CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

当 sql语句超过4000个字符,怎么处理

楼主lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))2006-10-18 12:37:22 在 .NET技术 / ASP.NET 提问

 
   
  string   abcd   =   string.Empty;  
                  abcd   =   Bodytxt.Text.Replace("'",   "");  
  char[]   chars   =   abcd.ToCharArray();  
  string   addstr   =   "update   test   set   teest='"   +   chars   +   "'";  
  ManagerDB.command(addstr);  
   
   
  显示的时候是   System.Char[]    
   
  怎么才能形式真实的字符啊 问题点数:100、回复次数:41Top

1 楼xingyaohua(邢跃华)回复于 2006-10-18 12:40:05 得分 100

upTop

2 楼aafshzj(生活需要breakthrough)回复于 2006-10-18 12:41:45 得分 0

为什么不用string,非要char[]?  
   
   
  欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/  
  我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。  
  Top

3 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 12:47:41 得分 0

abcd     是一个很长的字符串,报ORA-01704:   文字字符串过长   错误了啊Top

4 楼diandian82(点点(nothing))回复于 2006-10-18 12:51:53 得分 0

upTop

5 楼shoutor(www.mouxiao.com)回复于 2006-10-18 12:52:03 得分 0

纳闷,可以使用string啊Top

6 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 12:52:37 得分 0

abcd     是一个很长的字符串,报ORA-01704:   文字字符串过长   错误了啊  
  Top

7 楼viena(维也纳N02)回复于 2006-10-18 12:53:38 得分 0

恐怕不是字符串的问题,字符串长度是没有限制的,理论上可以达到二十亿个字符~Top

8 楼aafshzj(生活需要breakthrough)回复于 2006-10-18 12:54:24 得分 0

错误了就自己截断啊,否则还是会出错,除非你换类型并且用chunk   by   chunk的方法写进去。Top

9 楼viena(维也纳N02)回复于 2006-10-18 12:55:36 得分 0

用StringBuilder试下可不可以Top

10 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-10-18 12:56:51 得分 0

参数,你的查询(DBCommand)要使用   DBParameter   参数提交动态部分,拼接   SQL   命令应该仅仅用于形成命令结构而不应该用于提交数据部分。Top

11 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 12:59:08 得分 0

截断   还有什么用啊,昏,我就要完整的啊Top

12 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-10-18 13:06:28 得分 0

楼上你说的空间是哪个公司的?服务器设在哪里(哪个机房)?有没有测试页面可以访问?Top

13 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 13:09:58 得分 0

http://www.donetbbs.com   开源论坛Top

14 楼chentianfen(yi)回复于 2006-10-18 13:11:26 得分 0

chars   这个错了,它返回的是类型,所以你得到它,并没有什么不对,建议你使用存储过程,然后直接添加,用StringBuilder,至于存储过程的长度你不要设置,overTop

15 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 13:12:18 得分 0

Oracle     真是狗屎,其他数据库直接插就行的了Top

16 楼cancerser(都是混饭吃,记得要结帖)回复于 2006-10-18 13:13:20 得分 0

Oracle没存储过程啊?Top

17 楼shalen520(Love will keep us alive)回复于 2006-10-18 13:13:55 得分 0

使用参数Top

18 楼aafshzj(生活需要breakthrough)回复于 2006-10-18 13:15:00 得分 0

我说了,你要传超过长度限制的就要用chun   by   chunk的办法,一段一段写进去,具体看着个吧:  
  http://msdn2.microsoft.com/en-us/library/cydxhzhz.aspxTop

19 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 13:29:56 得分 0

upTop

20 楼shuen(ShiningStone)回复于 2006-10-18 13:36:18 得分 0

那你就用大文本Top

21 楼shuen(ShiningStone)回复于 2006-10-18 13:38:26 得分 0

OpenConnection();  
  OracleCommand   myCommand   =   new   OracleCommand("UPDATE   "+tableName+"   SET   "   +contentFieldName+"   =   :content   "   +"WHERE   "+keyFieldName+"   ="+keyValue);  
  myCommand.Connection   =   this.m_OracleConnection;  
  myCommand.Parameters.Add(new   OracleParameter("content",fieldType,   fieldContent.Length,contentFieldName));  
  myCommand.Parameters["content"].Value   =   fieldContent;  
  myCommand.ExecuteNonQuery();  
  myCommand.Dispose();  
   
  这是一段代码Top

22 楼myminimouse(坚决不用baidu)回复于 2006-10-18 14:02:42 得分 0

这个有意思Top

23 楼qhdream()回复于 2006-10-18 14:09:37 得分 0

chars   这个错了,它返回的是类型,所以你得到它,并没有什么不对,建议你使用存储过程,然后直接添加,用StringBuilder,至于存储过程的长度你不要设置,over  
   
  支持Top

24 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 14:12:28 得分 0

一定要用sql   直接操作啊Top

25 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 14:13:15 得分 0

难道非要先插入一个null,然后再一段一段更新吗?那Oracle   也太垃圾了吧Top

26 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 14:19:47 得分 0

upTop

27 楼Batiraul(Bati4Ever)回复于 2006-10-18 14:47:51 得分 0

拆分你的sql的功能,先用一段sql完成一部分工作再用另写sql完成剩余工作Top

28 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 15:35:33 得分 0

如果要插入60000个字符呢,那要更新20次了,昏Top

29 楼sine_cai()回复于 2006-10-18 16:08:53 得分 0

呵呵,这是对SQL语句长度的限制,Oracle中一个SQL语句最大只能支持4K。你这个更新可以不用insert或update语句,改为使用datatable的更新应该可以(没试过)。不过以前使用ADO时也是同样的错误,后来改为open一个dataset,然后使用dataset的赋值方式就可以了。Top

30 楼mryang9118(采芹人)回复于 2006-10-18 16:31:46 得分 0

用大文本啊!  
  读写数据流Top

31 楼kokubo_wing(假装父母富裕是违法行为)回复于 2006-10-18 16:35:40 得分 0

就是sql你不能把它截断再插入啊Top

32 楼sunbird69(太阳鸟)回复于 2006-10-18 16:45:39 得分 0

markTop

33 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 17:06:55 得分 0

自己弄好了  
   
  怎么给分给自己啊?Top

34 楼noyester()回复于 2006-10-18 17:16:27 得分 0

先把分给我,然后我转给你   :)Top

35 楼Batiraul(Bati4Ever)回复于 2006-10-18 18:00:18 得分 0

倒,还有这样给自己分的,不大方哈。  
   
  话说,没功劳也有苦劳啊,难怪信誉分不高Top

36 楼lenlong(lenlong(.net 空间 120元年100M,sqlserver数据库200元每年))回复于 2006-10-18 18:14:34 得分 0

你们的回答都没用到啊,这叫我怎么给分啊Top

37 楼loveyzy(菌哥)回复于 2006-10-18 19:27:44 得分 0

http://blog.csdn.net/zjcxc/archive/2003/12/29/20075.aspx    
  邹健的文章Top

38 楼Csharp110(~泰山~)回复于 2006-10-18 20:30:23 得分 0

学习了!Top

39 楼fangxinggood(JustACoder)回复于 2006-10-18 20:58:25 得分 0

应该使用BLOB字段:  
   
  ----------------------------  
   
  我在编写应用时,需要大量的插入大文本,但是oracle   的clob操作起来比较繁琐,应此我没有选择使用clob,而是使用了oracle以前版本中的long类型[但是long类型有一些限制,在一个表中只能有一个long字段]。  
  开始的时候我直接使用insert   into   table1   values(a,b[long])的方式插入数据库,但是oracle有些限制一条语句不能超过4000个字符,并报ORA-01704的错误。  
  经过查找oracle   的文档找到了解决的方法,就是对于long的字段使用setCharacterStream()方法将String插入数据库。  
   
  代码:  
  sql="insert   into   msg_info   values   (?,?,?,?[long类型字段],'C',sysdate,sysdate+"+msgterm+",?)";  
  pstat1   =   conn.prepareStatement(sql);  
  pstat1.setLong(1,   msg_id);  
              pstat1.setInt(2,   msg_gp_id);  
              pstat1.setString(3,   msg_title);  
              pstat1.setCharacterStream(4,new   StringReader(msg_info.toString()),msg_info.length());  
  conn.commit();  
              pstat1.setLong(5,   this.upid);Top

40 楼siugwan(开怀)回复于 2006-10-18 21:50:13 得分 0

sql   2005   的   话   支   持     varchar(max)类   型Top

41 楼levin9(生活就是強姦,習慣啦就是享受)回复于 2006-10-18 21:56:00 得分 0

恐怕不是,  
  char[]   不好.  
  将数据库该为text型Top

相关问题

关键词

得分解答快速导航

  • 帖主:lenlong
  • xingyaohua

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo