第一章 ADO.NET非连接类概述
1.1DataTable对象
Dim auto As New DataTable("Auto")
1.1.1添加DataColumn对象以创建一个模式
Dim vin As New DataColumn("Vin")
vin.DataType = GetType(String)
vin.MaxLength = 23
vin.Unique = True
vin.AllowDBNull = False
vin.Caption = "VIN"
auto.Columns.Add(vin)
Dim make As New DataColumn("Make")
make.MaxLength = 35
make.AllowDBNull = False
auto.Columns.Add(make)
Dim year As New DataColumn("Year", GetType(Integer))
year.AllowDBNull = False
auto.Columns.Add(year)
Dim yearMake As New DataColumn("Year and Make")
yearMake.MaxLength = 70
yearMake.Expression = "year + ' ' + make"
auto.Columns.Add(yearMake)
vin.DataType = GetType(String)
vin.MaxLength = 23
vin.Unique = True
vin.AllowDBNull = False
vin.Caption = "VIN"
auto.Columns.Add(vin)
Dim make As New DataColumn("Make")
make.MaxLength = 35
make.AllowDBNull = False
auto.Columns.Add(make)
Dim year As New DataColumn("Year", GetType(Integer))
year.AllowDBNull = False
auto.Columns.Add(year)
Dim yearMake As New DataColumn("Year and Make")
yearMake.MaxLength = 70
yearMake.Expression = "year + ' ' + make"
auto.Columns.Add(yearMake)
1.1.2 创建主键列
auto.PrimaryKey = New DataColumn() {vin}
1.1.3创建用于存储数据的DataRow对象
1.1.3.1向DataTable添加数据
Dim newAuto As DataRow = auto.NewRow
newAuto("Vin") = "123456789abcd"
newAuto("make") = "ford"
newAuto("Year") = 2002
auto.Rows.Add(newAuto)
auto.Rows.Add("98765", "buick", 2001)
auto.LoadDataRow(New Object() {"987654321xyz", "Jeep", 2002}, LoadOption.OverwriteChanges)
newAuto("Vin") = "123456789abcd"
newAuto("make") = "ford"
newAuto("Year") = 2002
auto.Rows.Add(newAuto)
auto.Rows.Add("98765", "buick", 2001)
auto.LoadDataRow(New Object() {"987654321xyz", "Jeep", 2002}, LoadOption.OverwriteChanges)
1.1.3.2使用DataRowState查看DataRow对象的状态
Private Function GetDataRowInfo(ByVal row As DataRow, ByVal columnName As String) As String
Dim retVal As String = String.Format("RowState: {0} ", row.RowState) & vbCrLf
Dim versionString As String
For Each versionString In System.Enum.GetNames(GetType(DataRowVersion))
Dim version As DataRowVersion = CType(System.Enum.Parse(GetType(DataRowVersion), versionString), DataRowVersion)
If row.HasVersion(version) Then
retVal &= String.Format("Version: {0} value: {1}", version, row(columnName, version)) & vbCrLf
Else
retVal &= String.Format("Version: {0} does not exist.", version) & vbCrLf
End If
Next
Return retVal
End Function
Dim retVal As String = String.Format("RowState: {0} ", row.RowState) & vbCrLf
Dim versionString As String
For Each versionString In System.Enum.GetNames(GetType(DataRowVersion))
Dim version As DataRowVersion = CType(System.Enum.Parse(GetType(DataRowVersion), versionString), DataRowVersion)
If row.HasVersion(version) Then
retVal &= String.Format("Version: {0} value: {1}", version, row(columnName, version)) & vbCrLf
Else
retVal &= String.Format("Version: {0} does not exist.", version) & vbCrLf
End If
Next
Return retVal
End Function
1.1.4枚举DataTable对象
Dim buffer As New System.Text.StringBuilder
For Each dc As DataColumn In auto.Columns
buffer.Append(String.Format("{0,15} ", dc.ColumnName))
Next
buffer.Append(vbCrLf)
For Each dr As DataRow In auto.Rows
For Each dc As DataColumn In auto.Columns
buffer.Append(String.Format("{0,15} ", dr(dc)))
Next
buffer.Append(vbCrLf)
Next