2014-04-04 4 views
0

은 내가 데이터를 여러 테이블을 반환하는 저장 프로 시저 내가 Dataset에이를 넣을 수 있습니다,하지만 난 테이블 이름 중 하나를하지 않는 .NET을 사용 저장 프로 시저 및 데이터 세트는

Select * from [Users]; 
Select * from [Supplier]; 
.... 

을 설정 한 :

Dim ds As DataSet = SQL.Get_dataSet("EXEC [Stored_Procedure_Name]") 
Dim i As Integer = 0 

Do Until i = ds.Tables.Count 
    msgbox(ds.Tables(d).TableName) 
    d = d + 1 
Loop 

이것은 일반적인 이름을 반환 : 표 1, 표 2, 표 3 대신이 [사용자], [공급], [...]는 다음과

Get_DataSet 기능이 될 때 :

Shared Function SQLdataSet(query As String) As DataSet 

Dim TempTable As New DataSet 
Dim Tempdata As SqlDataAdapter 

Using SQLConnection As SqlConnection = New SqlConnection(Connection_String_Current) 
    SQLConnection.Open() 

    Tempdata = New SqlDataAdapter(query, SQLConnection) 
    Tempdata.Fill(TempTable) 
End Using 

Return TempTable 

End Function 
+0

그리고 Get_dataSet() 메서드는 무엇을합니까 ??? –

+0

사용자 정의 데이터 레이어를 사용하는 것처럼 보입니다. bc Get_dataSet은 SqlClient 또는 내가 아는 표준 .NET 데이터베이스 라이브러리의 메서드가 아닙니다. 즉, 여러 개의 결과 집합을 반환하는 proc가 하나있는 경우 이것이 기본 데이터 어댑터 동작입니다. SqlClient 라이브러리를 사용하는 경우 "main"테이블 이름을 지정할 수 있으며 추가 결과 집합이 반환되면 테이블 #이 자동으로 증가합니다. – BateTech

+0

그것의 사용자 지정 함수는 SQLdataAdapter에서 데이터 집합을 채우기 위해 썼습니다 –

답변

1

사용자 정의 데이터 레이어를 사용하는 것처럼 보입니다. bc Get_dataSet은 내가 아는 표준 .NET 데이터베이스 라이브러리 또는 SqlClient의 메소드가 아닙니다. 즉, 여러 개의 결과 집합을 반환하는 proc가 하나있는 경우 이것이 기본 데이터 어댑터 동작입니다. SqlClient 라이브러리를 사용하는 경우 "기본"테이블 이름을 지정할 수 있으며 추가 결과 집합이 반환 될 때 "main"테이블 #이 자동으로 증가합니다.

+0

실제 테이블 이름을 가져올 방법이 없습니까? –

+0

@Frank_Vr : SQL Server는 열 이름을 반환하지만 테이블 이름은 반환하지 않습니다. 일반적인 경우에는 SELECT가 여러 테이블을 조인 할 수 없습니다. 그러면 어떤 테이블 이름이 반환되어야합니까? –

+0

두 예제에 따라 테이블 이름이 –

2

TableMappings을 사용하여 테이블 이름을 매핑 할 수 있습니다. 예 : (테스트되지 않은) 같은 :

Tempdata = New SqlDataAdapter(query, SQLConnection) 
Tempdata.TableMappings.Add("Table", "Users"); 
Tempdata.TableMappings.Add("Table1", "Supplier"); 
Tempdata.TableMappings.Add("Table2", "MyTable"); 
... 
Tempdata.Fill(TempTable) 

IIRC 기본 테이블 이름은 Table,Table1,Table2,...보다는 Table1,Table2,Table3,... 있습니다.

예상되는 테이블 이름을 "알아야"합니다. SQL Server에서 반환 한 결과에는 포함되지 않으므로 자동으로 추론 할 수 없습니다.