16,554
社区成员
发帖
与我相关
我的任务
分享
┌──────────────────────┬──────────────┬────────────┬──────────────┐
│ DataType │ ToDataType │DatabaseType│ConnectionType│
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Byte │System.SByte │SQLServer │SqlClient │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.DateTimeOffset │System.Int32 │SQLServer │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.SByte │System.Byte │SQLServer │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.TimeSpan │System.Int16 │SQLServer │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.DateTimeOffset │System.Int32 │SQLServer │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.SByte │System.Byte │SQLServer │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.TimeSpan │System.Int16 │SQLServer │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.DateTimeOffset │System.Int32 │Access │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Int64 │System.Decimal│Access │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Object │System.Byte[] │Access │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.SByte │System.Byte │Access │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.TimeSpan │System.Int16 │Access │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.DateTimeOffset │System.Int32 │Access │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Int64 │System.Decimal│Access │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Object │System.Byte[] │Access │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.SByte │System.Byte │Access │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.TimeSpan │System.Int16 │Access │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Byte │System.Boolean│Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Byte[] │NULL │Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.DateTimeOffset │System.Decimal│Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Guid │System.String │Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Int64 │System.Decimal│Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Object │NULL │Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.SByte │System.Boolean│Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Single │System.Double │Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.TimeSpan │System.Decimal│Excel │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.DateTimeOffset │System.Int32 │Excel │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Int64 │System.Decimal│Excel │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Object │System.Byte[] │Excel │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.SByte │System.Byte │Excel │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.TimeSpan │System.Int16 │Excel │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Byte │System.Boolean│DBase │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.DateTimeOffset │System.Double │DBase │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Guid │System.String │DBase │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Int64 │System.Double │DBase │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Object │System.Byte[] │DBase │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.SByte │System.Boolean│DBase │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Single │System.Double │DBase │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.TimeSpan │System.Double │DBase │Odbc │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.DateTimeOffset │System.Int32 │DBase │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Int64 │System.Decimal│DBase │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.Object │System.Byte[] │DBase │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.SByte │System.Byte │DBase │OleDb │
├──────────────────────┼──────────────┼────────────┼──────────────┤
│System.TimeSpan │System.Int16 │DBase │OleDb │
└──────────────────────┴──────────────┴────────────┴──────────────┘
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim db As LzmTW.Data.Database = New LzmTW.Data.SqlSqlClientDatabase(".", "Northwind")
Dim schema As LzmTW.Data.xsd.TableSchemaDataTable = db.GetSelectCommandSchemaTable("Employees")
Dim db2 As LzmTW.Data.Database = New LzmTW.Data.AccessOdbcDatabase("g:\office\Northwind.mdb")
Dim schema2 As LzmTW.Data.xsd.TableSchemaDataTable = db2.RebuildTableSchema(schema)
Dim schema3 As LzmTW.Data.xsd.TableSchemaDataTable = db2.GetSelectCommandSchemaTable("Employees")
Dim contrastTable As New DataTable
With contrastTable.Columns
.Add("ColumnName")
.Add("SqlServer")
.Add("Access")
.Add("E_ColumnName")
.Add("E_TypeName")
End With
Dim count As Integer = schema.Rows.Count
For i As Integer = 0 To count - 1
If i < count - 1 Then
contrastTable.LoadDataRow(New Object() {schema.Item(i).ColumnName, schema.Item(i).DataTypeName, schema2.Item(i).DataTypeName, schema3.Item(i).ColumnName, schema3.Item(i).DataTypeName}, True)
Else
contrastTable.LoadDataRow(New Object() {schema.Item(i).ColumnName, schema.Item(i).DataTypeName, schema2.Item(i).DataTypeName, Nothing, Nothing}, True)
End If
Next
Me.DataGridView1.DataSource = contrastTable
End Sub
┌────────────────┬──────────┬──────────┬────────────────┬──────────┐
│ ColumnName │ SqlServer│ Access │ E_ColumnName │E_TypeName│
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│EmployeeID │int │INTEGER │EmployeeID │INTEGER │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│LastName │nvarchar │VARCHAR │LastName │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│FirstName │nvarchar │VARCHAR │FirstName │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│Title │nvarchar │VARCHAR │Title │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│TitleOfCourtesy │nvarchar │VARCHAR │TitleOfCourtesy │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│BirthDate │datetime │DATETIME │BirthDate │DATETIME │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│HireDate │datetime │DATETIME │HireDate │DATETIME │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│Address │nvarchar │VARCHAR │Address │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│City │nvarchar │VARCHAR │City │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│Region │nvarchar │VARCHAR │Region │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│PostalCode │nvarchar │VARCHAR │PostalCode │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│Country │nvarchar │VARCHAR │Country │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│HomePhone │nvarchar │VARCHAR │HomePhone │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│Extension │nvarchar │VARCHAR │Extension │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│Photo │image │LONGBINARY│Photo │LONGBINARY│
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│Notes │ntext │VARCHAR │Notes │VARCHAR │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│ReportsTo │int │INTEGER │ReportsTo │INTEGER │
├────────────────┼──────────┼──────────┼────────────────┼──────────┤
│PhotoPath │nvarchar │VARCHAR │ │ │
└────────────────┴──────────┴──────────┴────────────────┴──────────┘
Namespace LzmTW.Data
Public Module SchemaDataTypes
Public [Boolean] As Type = GetType(System.Boolean)
Public [Byte] As Type = GetType(Byte)
Public [Bytes] As Type = GetType(System.Byte())
Public [DateTime] As Type = GetType(System.DateTime)
Public [DateTimeOffset] As Type = GetType(System.DateTimeOffset)
Public [Decimal] As Type = GetType(System.Decimal)
Public [Double] As Type = GetType(System.Double)
Public [Guid] As Type = GetType(System.Guid)
Public [Int16] As Type = GetType(System.Int16)
Public [Int32] As Type = GetType(System.Int32)
Public [Int64] As Type = GetType(System.Int64)
Public [Object] As Type = GetType(System.Object)
Public [SByte] As Type = GetType(System.SByte)
Public [Single] As Type = GetType(System.Single)
Public [String] As Type = GetType(System.String)
Public [TimeSpan] As Type = GetType(System.TimeSpan)
Public Function GetDataType(ByVal type As String) As Type
Select Case type
Case "System.Boolean"
Return SchemaDataTypes.Boolean
Case "System.Byte"
Return SchemaDataTypes.Byte
Case "System.Byte[]"
Return SchemaDataTypes.Bytes
Case "System.DateTime"
Return SchemaDataTypes.DateTime
Case "System.DateTimeOffset"
Return SchemaDataTypes.DateTimeOffset
Case "System.Decimal"
Return SchemaDataTypes.Decimal
Case "System.Double"
Return SchemaDataTypes.Double
Case "System.Guid"
Return SchemaDataTypes.Guid
Case "System.Int16"
Return SchemaDataTypes.Int16
Case "System.Int32"
Return SchemaDataTypes.Int32
Case "System.Int64"
Return SchemaDataTypes.Int64
Case "System.Object"
Return SchemaDataTypes.Object
Case "System.SByte"
Return SchemaDataTypes.SByte
Case "System.Single"
Return SchemaDataTypes.Single
Case "System.String"
Return SchemaDataTypes.String
Case "System.TimeSpan"
Return SchemaDataTypes.TimeSpan
Case Else
Throw New Exception("未知类型")
End Select
End Function
End Module
End Namespace