문제

여러 테이블을 반환하는 저장된 절차가 있습니다. 두 테이블을 어떻게 실행하고 읽을 수 있습니까?

나는 다음과 같은 것이 있습니다.


SqlConnection conn = new SqlConnection(CONNECTION_STRING);
SqlCommand cmd = new SqlCommand("sp_mult_tables",conn);
cmd.CommandType = CommandType.StoredProcedure);

IDataReader rdr = cmd.ExecuteReader();

읽는 방법은 확실하지 않습니다 ...이 유형의 쿼리를 처리하는 가장 좋은 방법은 무엇입니까? 데이터를 데이터 세트에 읽어야한다고 생각하십니까? 이 작업을 수행하는 가장 좋은 방법은 어떻습니까?

감사.

도움이 되었습니까?

해결책

적응 MSDN:

using (SqlConnection conn = new SqlConnection(connection))
{
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand(query, conn);
    adapter.Fill(dataset);
    return dataset;
}

다른 팁

결과를 데이터 세트에 읽으려면 데이터 아래이터를 사용하는 것이 좋습니다.

그러나 DataReader를 사용하면 첫 번째 결과 세트를 통해 먼저 반복 한 다음 Nextresult에 전화하여 두 번째 결과 세트로 전진하십시오.

독자는 반환 된 순서의 결과 세트를 처리합니다. 첫 번째 결과 세트를 처리하면 rdr.nextresult ()를 호출하여 다음 중 하나를 설정하십시오.

또한 테이블 어댑터는 채우기의 데이터 세트의 모든 결과 세트를 자동으로 읽지 만 DataTables는 Untyped 및 Table1, Table2 등으로 명명됩니다.

* 모든 Excel 시트 이름을 읽고 테이블 이름으로 단일 데이터 세트에 여러 시트를 추가합니다.*

'글로벌 변수

string ()로 Dim ExcelSheetNames

dim dtset as system.data.dataset = new DataSet ()

Private Sub BtnloadData_Click (ByVal Sender As System.Object, ByVal E As System.EventArgs) 처리 BtnloadData.click

OLEDBCONNECTION으로 마이킹을 어둡게합니다

dim da as system.data.oledb.oledbdataadapter

DIM I ITEGER

myConnection = new System.Data.OLEDB.OLEDBCONNECTION ( "제공자 = microsoft.jet.oledb.4.0;

데이터 소스 = sstatus.xls; 확장 속성 = ""Excel 8.0; hdr = no; imex = 1 "" ")

'다음 메소드는 Gloabal 배열에서 모든 Excel 시트 이름을 가져옵니다 Excelsheetnames

getExcelSheetNames ( "sstatus.xls")

        For Each str As String In excelSheetNames
            da = New OleDbDataAdapter("select * from [" & str & "]", MyConnection)
            da.Fill(DtSet, excelSheetNames(i))
            i += 1
        Next           
        DataGridView1.DataSource = DtSet.Tables(0)          

End Sub

public function getExcelSheetNames (byval elcfelename as string)

    Dim con As OleDbConnection = Nothing

    Dim dt As DataTable = Nothing

    Dim conStr As String = ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=") + excelFileName & ";Extended Properties=Excel 8.0;"

    con = New OleDbConnection(conStr)
    con.Open()
    dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
    excelSheetNames = New String(dt.Rows.Count - 1) {}
    Dim i As Integer = 0

    For Each row As DataRow In dt.Rows
        excelSheetNames(i) = row("TABLE_NAME").ToString()
        i += 1
    Next
End Function
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top