SQL2005 CLR: UDT用户定义类型 part2

本文代码针对SQL2005测试。主要探索了UDT的应用,可通过Type2从数据库向客户端传递附加信息。采用UDT能让类根据当前语言获取对应标题,还可实现输入验证等功能。基于UDT的数据库能快速创建或自动生成画面。

[本文代码仅作为针对SQL2005的测试用途,仅供参考]

现在来探索一下UDT的应用:

None.gif           string str = Properties.Settings.Value.SteevenConnection;
None.gif            System.Data.SqlClient.SqlConnection conn 
= new SqlConnection(str);
None.gif            SqlCommand cmd 
= conn.CreateCommand();
None.gif            cmd.CommandText 
= "select * from dbo.MyUser";
None.gif            conn.Open();
None.gif            SqlDataReader r 
= cmd.ExecuteReader();
None.gif            r.Read();
None.gif
None.gif            
Type t = r.GetFieldType(2); //Type2
None.gif
            object o = r.GetValue(2); //instance of Type2
None.gif
            SqlString st = ((Type2)o).Hello("test"); //Hello: 3

以上代码要求引用包含Type2定义的DLL, 引用包System.Data.SqlClient
说明客户端查询到的的确是Type2的实例。

既然得到的是一个类的实例,那么我们可以把很多附加信息通过Type2从数据库传递给客户端。

以前在构造一个DataGrid时,列需要可读的Title, 宽度等信息,一般做法是手工指定,即使开发工具能够自动构造列信息,也惨不忍睹。如果采用了UDT, 我们可以让UDT类这样写:
public class Type2 : IDescription{
  ....
  public Title{
    get{
      switch(Thread.CurrentThread.UICulture):
        case “cn-zh“: return “姓名“; break;
        case “en-us“: return “Name“; break;
      }
   }
  ....
}
这样在拿到结果集构造画面时,就可以取得和当前语言对应的Title了。
同样,还可以让UDT实现IValidator,提供对输入的验证,并且提供友好的错误信息。甚至可选信息。

可能实现的功能有:
标题、业务描述、帮助、可选值、验证、Input控件(webform/winform)。。。和SAP里面的域定义类似。

完全基于以上UDT的数据库可以快速创建输入、报表等画面,甚至自动生成,或者构造一个万能画面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值