VB.NET SQLClient表名称不明确

时间:2015-10-20 16:56:29

标签: vb.net

以下是一些简单的示例代码,演示了如何从SQL Server获取结果:

{{1}}

在.Net中,表A将出来表和表B将出来表1 ...我希望它们保存真正的表名。

如何从SQL查询中获取表的真实表名?所有的列名都是正确的,但是这些表出来了TABLE,TABLE1,TABLE2 ......我显然知道如何在我的代码中设置它们或解析表名并在代码中设置它们......我想知道为什么.Net会丢失首先是表名,如果有办法让他们不变成模棱两可的名字。

为什么SQLClient驱动程序的编写者不认为我们关心表名?

任何人都可以在不用手动设置表名的情况下解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

以下是两种方法 - 将表格映射到DataTables并一次加载DataSet一个表格所需的名称。

Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
    Dim Connection As New SqlConnection(OISConnectString)
    Connection.Open()
    Dim da As New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM FIS..FIS_Log; SELECT * FROM FIS..FIS_Log_CA", Connection)
    Dim ds As New DataSet
    da.Fill(ds)

    Debug.Print(ds.Tables(0).TableName) ' Table
    Debug.Print(ds.Tables(1).TableName) ' Table1

    Dim dtLog As DataTable = ds.Tables(0)
    Dim dtLog_CA As DataTable = ds.Tables(1)

    ' work with DataTables by name

    Stop
    'reset
    ds = Nothing
    da = Nothing

    ds = New DataSet()

    da = New SqlDataAdapter("SELECT * FROM FIS..FIS_Log", Connection)
    da.Fill(ds, "FIS_Log")
    da = New SqlDataAdapter("SELECT * FROM FIS..FIS_Log_CA", Connection)
    da.Fill(ds, "FIS_Log_CA")

    Debug.Print(ds.Tables(0).TableName) ' Table
    Debug.Print(ds.Tables(1).TableName) ' Table1

    dtLog = ds.Tables("FIS_Log")
    dtLog_CA = ds.Tables("FIS_Log")

    Connection.Close()
End Sub

根据您的平台,您可能会发现TableAdapterManager很有用