欢迎来到天天文库
浏览记录
ID:22820791
大小:65.50 KB
页数:7页
时间:2018-10-31
《sqlclr(四)用户定义类型udt--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、SQLCLR(四)用户定义类型UDT>> 本文示例源代码或素材下载 用户自定义类型是SQLServer2005的新特性。和前几篇文章介绍的SQLCLR相比,UDT相对有此复杂。UDT也有许多限制和必须遵守UDT规范。UDT的二进制不能超过8000个字节,必须包含一个null值表示,因为SQLServer的数据类型是允许null值的。 UDT可以是结构或类。如果是类的话需加[StructLayout(LayoutKind.Sequential)] 标签(属性),这是保证序列化时不改变属性的次序。 现在看一段代码usingSystem;usingSyste
2、m.IO;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Data.SqlTypes;usingMicrosoft.SqlServer.Server;[Serializable][Microsoft.SqlServer.Server.SqlUserDefinedType(Format.UserDefined,MaxByteSize=1024)]publicstructPerson:INullable,IBinarySerialize{ publicoverridestringToString()
3、 { //用您的代码替换下列代码 returnFormatU(); } publicboolIsNull { get { //在此处放置代码 returnm_Null; } } publicstaticPersonNull { get { Personh=ne_Null=true; returnh; } } publicstaticPersonParse
4、(SqlStrings) { if(s.IsNull) returnNull; Personu=nee=parts[0]; u.age=ParseAge(parts[1]); u.sex=parts[2]; returnu; } //这是占位符方法 publicstringFormatU() { //在此处插入方法代码 returnstring.Format(名称:{0},年龄:{1},性别:{2},name,age,sex); }
5、 //这是占位符静态方法 publicstaticintParseAge(stringstr) { //在此处插入方法代码 returnint.Parse(str.Substring(0,str.LastIndexOf(岁))); } //这是占位符字段成员 privateintage; publicintAge { get{returnage;} set{age=value;} } privatestringname; publicstringName {
6、get{returnname;} set{name=value;} } privatestringsex; publicstringSex { get{returnsex;} set{sex=value;} } //私有成员 privateboolm_Null; publicbyte[]b; publicvoidRead(BinaryReaderr) { name=r.ReadString(); sex=r.ReadString(); age=r.Re
7、adInt32(); m_Null=r.ReadBoolean(); } publicvoidWrite(BinaryWriterw12下一页>>>>这篇文章来自..,。) { e); _Null); }} 部署后在SQLServer2005中执行下面的语句createtableUdtTest(Idintnotnull,pPersonnotnull)insertintoUdtTestvalues(1,'David,24岁,男')selectid,convert(nvarchar(25),p)f
8、romUdtTestdr
此文档下载收益归作者所有