如何使用VB.Net确定SQL Server表行的数据类型

时间:2014-07-02 22:23:46

标签: odbc oledb sqlclient getschema

我正在开发一些代码,允许客户端连接到各种外部数据源,包括OLEDB,ODBC和SQL Server。在我的VB.NET代码中,如果我使用system.data.oledbsystem.data.odbc建立连接,我可以使用system.data.oledb.oledbTypesystem.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有一个类似的解决方案。

但是,我似乎找不到从GetSchema连接的SQLClient方法填充的数据行表中获取数据类型的方法。

有什么想法吗?

提前致谢。

戴夫

1 个答案:

答案 0 :(得分:0)

这是一个加载DataGridView的代码段。您只需加载本地DGV或使用DBSchema(即DataTable),而不是使用表单。

    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

如果您有现有的DataTable(例如g.DBSchema),您可以使用:

    For Each col As DataColumn In g.DBSchema.Columns
        Debug.Print(col.DataType.ToString)
    Next

但是这将返回ADO DataType(我认为),而不是SQL数据类型。