VB.NET SQLClient表名称不明确
下面是一些简单的示例代码,演示如何从SQL Server返回结果:VB.NET SQLClient表名称不明确,vb.net,Vb.net,下面是一些简单的示例代码,演示如何从SQL Server返回结果: Dim dtbTable As System.Data.DataTable Dim sdaDataAdapter As New System.Data.SqlClient.SqlDataAdapter() sdaDataAdapter = New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM A; SELECT * FROM B", Connection) dtbTab
Dim dtbTable As System.Data.DataTable
Dim sdaDataAdapter As New System.Data.SqlClient.SqlDataAdapter()
sdaDataAdapter = New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM A; SELECT * FROM B", Connection)
dtbTable = New System.Data.DataTable()
dtbTable.Locale = System.Globalization.CultureInfo.InvariantCulture
sdaDataAdapter.Fill(dtbTable)
sdaDataAdapter = Nothing
objCommandBuilder = Nothing
在.Net中,表A将出现在表中,表B将出现在表1中。。。我想让他们保留他们的真实姓名
如何从SQL查询中获取表的真实表名?所有的列名都是正确的,但是表出来了表,表1,表2。。。我显然知道如何在代码中设置它们,或者解析表名并在代码中设置它们。。。我想知道为什么.Net一开始就放松了表名,是否有办法使它们不变成模棱两可的名称
为什么SQLClient驱动程序的编写者不认为我们关心表名
任何人有什么想法可以绕过这个问题,而不必手动设置表名 这里有两种方法-将表映射到
数据表
,并使用所需名称一次加载数据集
一个表
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很有用,具体取决于您的平台。“您能展示一下复杂的sql吗?这可能有助于回答命名更改的原因。如果表名保存在我运行的任何SQL上,那就太好了。Net将使用表名转换每个表,如table、TABLE1、TABLE2…感谢您的提示,但这两种方法都不够通用。。。我希望有一种方法可以让.Net找出真正的表名。。。就像列名一样。它没有将列命名为Column1。第二栏,第三栏。。。它知道真名。为什么它不知道这些表的真实名称?也许TableAdapterManager更聪明。。。我在这方面做得还不够。谢谢查询不一定有表名——查询本身会生成一个表。e、 您可以构建一个查询来将多个表连接在一起—您希望ADO.Net返回什么?您正在构建SQL,为什么不知道“表名?”我可以。。。我只是希望如果查询有一个主表名,ADO可以解析它。它甚至不尝试。即使有10个联接,也可以将主联接作为表名。我想我会继续用我多年来一直使用的方式命名它……在上面的代码(下半部分)中,我不知道重用DataAdapter是否是一个问题。更新可能有问题。