好像发现了一个微软的bug

athossmth 2004-07-08 06:43:15
这两天碰上了一个OleDb/SqlDb Mapping中SqlDbType.Text引起的问题。

方法Void System.Data.SqlClient.SqlCommandBuilder.DeriveParameters(SqlCommand)可以为SqlCommand配置参数,但当参数是SqlDbType.Text时,配置的结果是:
Name Value Type
-sqlPrmt {System.Data.SqlClient.SqlParameter} System.Data.SqlClient.SqlParameter
DbType AnsiString System.Data.DbType
SqlDbType VarChar System.Data.SqlDbType
ParameterName @DISEASE_NAMES String
Size 2147483647 Integer

即,它的SqlDbType属性并不是SqlDbType.Text,而是SqlDbType.VarChar,而Size属性还是2147483647,即2^31-1,仍然保留了SqlDbType.Text类型的属性。这样在调用的时候,SQL Server就会报错:Not enough Buffer。

详细:http://blogs.coder.cn/athos/articles/613.aspx
...全文
286 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanruinet 2005-04-15
  • 打赏
  • 举报
回复
这个问题我也遇到了,当没有指定参数类型的时候会出现这个错误
我还发现当一段text全是或大部分是英文的话可能不会出现这个错误
显示指定参数类型能解决这个问题

才知道微软已经发现了这个Bug,还有了KB
athossmth 2005-04-13
  • 打赏
  • 举报
回复
any voucher provided? :p
速马 2005-04-13
  • 打赏
  • 举报
回复
你的意思是,SP里面有个参数的类型是text
但是SqlCommandBuilder.DeriveParameters出来的类型是varchar?

如果是这样,建议你到MSDN报告一个bug:
http://lab.msdn.microsoft.com/productfeedback/
deyunanhai 2005-04-13
  • 打赏
  • 举报
回复
up
nga96 2005-04-13
  • 打赏
  • 举报
回复
UP
athossmth 2005-04-12
  • 打赏
  • 举报
回复
? sp1234,请问能否详细说明一下?
  • 打赏
  • 举报
回复
那个长度是从你的 AnsiString 推断出来的,与 SqlDbType.Text 无关。
athossmth 2005-04-12
  • 打赏
  • 举报
回复
全文原发在http://blog.coder.cn,现在那个网站好像有点问题,今转贴于
http://blog.csdn.net/athossmth/archive/2005/04/12/344865.aspx

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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