VB.NET——泛型集合的使用
来源:互联网 发布:简易海报设计软件 编辑:程序博客网 时间:2024/06/08 03:21
因为我们每次和数据库交互都需要转换为泛型,所以将这个方法抽象出来,放在D层一遍调用,和sqlhelper类的作用相似
'**********************************************'说明:将DataTable转化为泛型集合'命名空间:DAL'机器名称:晓'创建日期:2015/2/23 11:13:28'作者:郑浩'版本号:V1.00'**********************************************Imports System.Collections.Generic '增加泛型的命名空间 Imports System.Reflection '引入反射:为了使用PropertyInfo Public Class ConvertGenericsHelper '将datatable转化为泛型集合 Public Shared Function convertToList(Of T As {New})(ByVal dt As DataTable) As IList(Of T) '注意:convertToList(Of T As {New}) 这里的new是用来约束T的,必须有,不然new T的时候会出现错误 Dim myList As New List(Of T) '定义最终返回的集合 Dim myTpye As Type = GetType(T) '得到实体类的类型名 Dim dr As DataRow '定义行集 Dim tempName As String = String.Empty '定义一个临时变量 '遍历DataTable的所有数据行 For Each dr In dt.Rows Dim myT As New T '定义一个实体类的对象 Dim propertys() As PropertyInfo = myT.GetType().GetProperties() '定义属性集合 Dim Pr As PropertyInfo '遍历该对象的所有属性 For Each Pr In propertys tempName = Pr.Name '将属性名称赋值给临时变量 '检查DataTable是否包含此列(列名==对象的属性名) If (dt.Columns.Contains(tempName)) Then '将此属性与datatable里的列明比较,查看datatable是否包含此属性 '判断此属性是否有Setter If (Pr.CanWrite = False) Then '判断此属性是否可写,如果不可写,跳出本次循环 Continue For End If Dim value As Object = dr(tempName) '定义一个对象型的变量来保存列的值 If (value.ToString <> DBNull.Value.ToString()) Then '如果非空,则赋给对象的属性 Pr.SetValue(myT, value, Nothing) '在运行期间,通过反射,动态的访问一个对象的属性 End If End If Next myList.Add(myT) '添加到集合 Next Return myList '返回实体集合 End FunctionEnd Class
D层代码
'**********************************************'说明:利用泛型集合来查看学生余额'命名空间:DAL'机器名称:晓'创建日期:2015/2/23 11:27:21'作者:郑浩'版本号:V1.00'**********************************************Imports IDALImports System.Data.SqlClientPublic Class SqlserverCheckBalanceDAL : Implements ICheckBalance Public Function ICheckBalance(studentinfo As Entity.EN_StudentInfo) As List(Of Entity.EN_StudentInfo) Implements ICheckBalance.ICheckBalance Dim sql As String sql = "select * from ZH_StudentInfo where CardNo = @CardNo" Dim paras As SqlParameter() = {New SqlParameter("CardNo", studentinfo.CardNo)} Dim dt As New DataTable '保存转换后的泛型集合 Dim myList As New List(Of Entity.EN_StudentInfo) dt = SqlHelper.SqlHelper.ExecSelect(sql, CommandType.Text, paras) '先判断dt是否为空 If dt.Rows.Count > 0 Then '将dt转换为泛型集合 myList = ConvertGenericsHelper.convertToList(Of Entity.EN_StudentInfo)(dt) Return myList Else Return Nothing End If End FunctionEnd Class
’直接给文本框赋值
Dim studentinfo As New Entity.EN_StudentInfo studentinfo.CardNo = Trim(txtCardNo.Text) Dim dt As New List(Of Entity.EN_StudentInfo) Dim checkbalance As New Facade.FacadeCheckBalance dt = checkbalance.CheckBalance(studentinfo) txtClass.Text = dt(0).Classes '0表示泛型集合中的第一个实体 txtStudentNo.Text = dt(0).StudentNo txtName.Text = dt(0).StudentName txtSex.Text = dt(0).Sex txtStatus.Text = dt(0).Status txtGrade.Text = dt(0).Grade txtBalance.Text = dt(0).Cash txtExplain.Text = dt(0).Explain End Sub
’和DataGridView控件交互
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim studentinfo As New Entity.EN_StudentInfo studentinfo.CardNo = Trim(txtCardNo.Text) Dim dt As New List(Of Entity.EN_StudentInfo) Dim checkbalance As New Facade.FacadeCheckBalance dt = checkbalance.CheckBalance(studentinfo) dgvRecord.DataSource = dt dgvRecord.AutoGenerateColumns = True dgvRecord.Columns(1).HeaderText = "卡号" End Sub
0 0
- VB.NET——泛型集合的使用
- vb.net—SQLHelper类的使用
- vb.net—DataGridView的使用
- vb.net & 泛型集合-解决Datatable强耦合
- vb.net & 泛型集合-解决Datatable强耦合
- vb.net入门——ComboBox 控件的使用
- vb.net controls集合
- VB.NET委托的使用
- [VB.Net] 数组的使用
- VB.NET委托的使用
- vb.net配置文件的使用
- vb.net程序开发——见识不一样的vb
- asp.net教程:vb.net入门——MonthCalendar 控件的使用
- [VB.NET]要个VB.NET的Socket使用例子
- VB.Net—配置文件
- vb.net—配置文件
- 【VB.net】——难以启齿的感受
- (转)vb.net入门——设置值的控件:RadioButton的使用
- Android防止apk程序被反编译的实践
- 环境变量path的值大于1023的解决办法
- hdu4283---You Are the One(区间dp)
- hdu 3065 病毒侵袭持续中 (ac自动机)
- Android自动化测试工具——Monkey
- VB.NET——泛型集合的使用
- 产品经理日常工作职责分析与整理
- poj3140 Contestants Division(树形DP)
- Eclipse for Mac 常用快捷键
- scala泛函编程是怎样被选中的
- CC150 Arrays and Strings 1.1 ~ 1.3 Unique Characters, Reverse String, IsPermutation
- VisualSVN Server 安装出错
- Arduino + BMP180 显示气压 温度
- 在某个位置后面插入字符串