关于“不允许从数据类型sql_variant到uniqueidentifier的隐式转换 delphi variant类型

此文章帮了我的大忙

http://blog.csdn.net/blue_morning/article/details/5056936

太感谢了!

一张公司结构表:

ID: uniqueidentifier (PK)

ParentID: uniqueidentifier

Name: Varchar(50)

通过SQLDataSource绑定到GridView,启用GridView编辑功能运行后不编辑ParentID字段,任意修改Name的值后

点更新,出现如下错误:

不允许从数据类型 sql_variant 到 uniqueidentifier 的隐式转换。请使用 CONVERT函数来运行此查询

第一个想法是:把string转换为uniqueidentifier时出错了。检查ASPX代码:




Type="Object"我估计是这错了。我尝试在这写Type="uniqueidentifier",结果不行,错误提示是:

系统不支持uniqueidentifier.

第二个想法:在SQLDataSource的BeforeUpdate事件中把这个参数的值强制转换为uniqueidentifier

protected void SqlDataSource1_Updating(object sender,SqlDataSourceCommandEventArgs e)
{
for (int i = 0; i < e.Command.Parameters.Count; i++)
{
if (e.Command.Parameters[i].ParameterName == "@ParentID")
关于“不允许从数据类型sql_variant到uniqueidentifier的隐式转换 delphi variant类型
e.Command.Parameters[i].Value = newGuid(e.Command.Parameters[i].Value.ToString());

}
}

结果还是不行。

第三步:上Google查询,无解。

最后突然想起来SQL中也有Convert这个函数,难道是要修改SQL语句?!

打开ASPX,将SQLDataSource的UpdateCommand进行如下修改

UpdateCommand="UPDATE [T_COMP]

SET [ParentID] = CONVERT(uniqueidentifier, @ParentID), [Name] =@Name

//原来的SET [ParentID] = @ParentID, [Name] = @Name

WHERE [ID] = @ID"

再次运行并测试,通过。

郁闷啊,两个小时过去了。希望通过这篇文章大家不要再像我一样浪费时间。

最后做一个简单小结:

1、.NET传参数给数据库时,数据类型都应该是sql_variant ,最后的转换是由SQLServer来完成的(我推测是这样)。

2、同样的类型转换@ID做为Where条件参数可以进行正确的转换,但是@ParentID做为更新值就不行,

这应该是一个BUG。

[引用][举报]

还有一个办法,在updateparameter里面把ParentID参数的DbType设为Guid,Type设为Empty就可以了。我摸索出来的
1楼 jhonke 2010-06-0618:53发表[回复][引用][举报]
你好,我出现了你同样的问题,我使用了CONVERT。还是那样。
UpdateCommand="UPDATE [Product] SET [Name]=CONVERT(uniqueidentifier, @Name), [ProductNumber] =@ProductNumber, [Color]= @Color...

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/203803.html

更多阅读

从PC传文件到iPhone的最简单方法 简单飞机pc版

大家通常情况下在PC端传入数据到iPhone有以下几种方式:1.通过数据线+ iTools 或者 iTunes;一般情况下我们会选择使用这种方式进行,毕竟不管iTools 或者 iTunes 除了数据的传送,其他功能也很强大。但是谁会随时随地都带上数据线,难道你准

关于义和团一 从反清复明到扶清灭洋 义和团扶清灭洋

从反清复明到扶清灭洋这张图片以前在图书馆见过,是一本英文书籍的插图,印象极为深刻。后来我找了很久,再也没见到这本书,这两天在网页上浏览居然发现了。大家看,其实有意思的不是画面,而是两旁的对联:万箭射猪身看妖精再敢叫不?一刀斩羊颈

从“洗身洞”到“迎宾池”——九寨沟黄龙游26 九寨沟黄龙

在黄龙的下山路上,过了“金沙铺地”,还有五个景点:洗身洞,莲台飞瀑,潋滟湖,飞瀑流辉,迎宾池。 走过迎宾池即黄龙的出口,至此,黄龙沟的游览就告结束了。我们这次的“九寨沟黄龙游”是“绵进兰出”的,也就是从四川的绵阳进,甘肃的兰州出,故从下

阳光窗批发商 玩具进货怎样从批发商处拿到最低进价?

  玩具生意竞争激烈,利润也并非可观,因此,对于众多玩具经销商来说,压低成本就是赢利。那么怎样才能从批发商手里拿到最低价的货呢,阿里巴巴商人论坛的朋友们提出了很好的建议.  以从义乌进的货为例,每个同样商品至少都有十几家店有,

声明:《关于“不允许从数据类型sql_variant到uniqueidentifier的隐式转换 delphi variant类型》为网友聆听你的哀伤分享!如侵犯到您的合法权益请联系我们删除