VB.NET SQLCLIENT表名暧昧
下面是展示我如何获得返回结果从SQL Server一些简单的示例代码:VB.NET SQLCLIENT表名暧昧
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中,表一会出来表和表B将出来TABLE1 ...我想让他们保存真正的表名。
如何从SQL查询中获取表的真实表名?所有的列名是正确的,但表出来TABLE,TABLE1,TABLE2 ...我显然知道如何在我的代码中设置它们或解析表名并将它们设置在代码中...我想知道为什么.Net丢失首先是表名,如果有办法让他们不要变成不明确的名字。
为什么SQLClient驱动程序的编写者不会认为我们关心表名?
来自任何人的任何想法,以解决这个问题,而不必手动设置表名称?
以下是两种方法 - 将表格映射到DataTables
,并以所需名称一次加载一张表格。
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有用取决于你的平台
感谢您的提示,但这两种方法都是不够通用......我希望有一种方式,.Net可以找出真正的表名......就像列名一样。它不命名列Column1。 Column2,Column3 ......它知道真名。为什么它不知道表的真实名称?也许TableAdapterManager可能更聪明...没有足够的工作。谢谢! – Jeff
查询不一定有表名 - 查询本身导致一个表。例如您可以构建查询以将多个表连接在一起 - 您希望ADO.Net返回什么结果?你正在构建SQL,你为什么不知道“表名?” – rheitzman
我可以...我只是希望如果查询有主表名称,ADO可以解决它。它甚至不尝试。即使有10个连接,它也可能只是主要的FROM
“” – Plutonix
你能展现复杂的SQL?它可能有助于回答命名改变的原因。 –
如果表名保存在我运行的任何SQL ... .Net中,将会使用TABLE,TABLE1,TABLE2等表名转换每个表... – Jeff