我正在编写一些允许客户端连接到各种外部数据源的代码,包括OLEDB、ODBC和SQL Server。在我的VB里。. NET代码,如果我使用system.data.oledb
或system.data.odbc
建立连接,我可以使用system.data.oledb.oledbType
或system.data.odbc.odbcType
方法来测试Integer或Double数据类型。
例如,在下面的代码片段中,dr
是来自使用OLEDB连接GetSchema
方法填充的数据表的数据行。
--- Start Example-------
If dr("Data_Type") = System.Data.OleDb.OleDbType.Integer Then
...
End
--- End Example-------
对于system.data.odbc
也有类似的解决方案。
然而,我似乎找不到一种方法来从SQLClient
连接的GetSchema
方法填充的数据行表中获取数据类型。
任何想法?
提前感谢。
戴夫这是一个加载DataGridView的代码片段。而不是使用表单,你只需加载一个本地DGV或使用DBSchema,这是一个数据表。
Private Sub DataDictionaryToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataDictionaryToolStripMenuItem.Click
If g.DBSchema Is Nothing Then
Using con As New SqlConnection(g.OISConnectString)
con.Open()
g.DBSchema = con.GetSchema("Columns") ' full DB Schema
End Using
End If
Dim frm As New frmSearch2
frm.inDataView = New DataView(g.DBSchema) ' dv
frm.inSQLName = "Database Schema"
frm.Show()
End Sub
如果你有一个已经存在的数据表(例如dbschema),你可以使用这个:
For Each col As DataColumn In g.DBSchema.Columns
Debug.Print(col.DataType.ToString)
Next
但这将返回ADO数据类型(我认为),而不是SQL数据类型。