SQL2005 CLR: UDT用户定义类型 part2
2004-08-05 15:33
309 查看
[本文代码仅作为针对SQL2005的测试用途,仅供参考]
现在来探索一下UDT的应用:
string str = Properties.Settings.Value.SteevenConnection;
System.Data.SqlClient.SqlConnection conn = new SqlConnection(str);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from dbo.MyUser";
conn.Open();
SqlDataReader r = cmd.ExecuteReader();
r.Read();
Type t = r.GetFieldType(2); //Type2
object o = r.GetValue(2); //instance of Type2
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的数据库可以快速创建输入、报表等画面,甚至自动生成,或者构造一个万能画面。
现在来探索一下UDT的应用:
string str = Properties.Settings.Value.SteevenConnection;
System.Data.SqlClient.SqlConnection conn = new SqlConnection(str);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from dbo.MyUser";
conn.Open();
SqlDataReader r = cmd.ExecuteReader();
r.Read();
Type t = r.GetFieldType(2); //Type2
object o = r.GetValue(2); //instance of Type2
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的数据库可以快速创建输入、报表等画面,甚至自动生成,或者构造一个万能画面。
相关文章推荐
- SQL2005 CLR: UDT用户定义类型 part1
- SQL2005 CLR: UDT用户定义类型 part3
- SQLCLR(四)用户定义类型UDT
- SQLCLR(四)用户定义类型UDT
- SQLCLR(四)用户定义类型UDT
- 利用CLR用户自定义类型为您的SQL2005增加数组类型。
- SQLCLR(四)用户定义类型UDT
- 【SQL Server学习笔记】SQL Server 用户定义函数、用户定义类型
- C#编程(四十一)----------用户定义的数据类型转换
- 判断一个类是JAVA类型还是用户定义类型
- 《CLR via C#》Part2之Chapter5 基元类型、引用类型和值类型(三)
- 修改用户定义的数据类型
- sql2005 若字段定义的类型为datetime,插入为''(空),那么会默认值为1900-01-01 00:00:00.000
- SQL 用户定义表类型,在存储过程里使用表类型,表参数作参数
- 【SQL Server学习笔记】SQL Server 用户定义函数、用户定义类型
- SQL SERVER 使用存储过程创建、删除用户定义数据类型
- 解决VC错误error C2552:不聚合带用户定义的构造函数的类型
- vb用户定义类型未定义
- 隐式转换:用户定义的转换必须是转换成封闭类型,或者从封闭类型转换
- 用户定义类型未定义