كيف يمكنني قراءة جداول متعددة في مجموعة بيانات؟

StackOverflow https://stackoverflow.com/questions/170455

  •  05-07-2019
  •  | 
  •  

سؤال

لدي إجراء مخزن يقوم بإرجاع جداول متعددة.كيف يمكنني تنفيذ وقراءة كلا الجدولين؟

لدي شيء مثل هذا:


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

IDataReader rdr = cmd.ExecuteReader();

لست متأكدًا من كيفية قراءتها... ما هي أفضل طريقة للتعامل مع هذا النوع من الاستعلامات، أعتقد أنني يجب أن أقرأ البيانات في DataSet؟كيف هي أفضل طريقة للقيام بذلك؟

شكرًا.

نصائح أخرى

إذا كنت ترغب في قراءة النتائج إلى DataSet، كنت أفضل أن تكون باستخدام DataAdapter و.

ولكن مع DataReader، أعاد الأول من خلال مجموعة النتائج الأولى، ثم استدعاء NextResult للتقدم إلى مجموعة النتائج الثاني.

والقارئ سوف تتعامل مع مجموعات النتائج بالترتيب عاد. عندما يتم معالجة مجموعة النتائج الأولى، والدعوة rdr.NextResult () لتعيين لاحد المقبل

وعلما أيضا بأن محول الجدول وقراءة تلقائيا كافة مجموعات النتائج في جداول في مجموعة بيانات على التعبئة، إلا أن datatables يكون مصنف ويسمى Table1، Table2، وما إلى ذلك.

* قراءة جميع أسماء أوراق Excel وإضافة أوراق متعددة إلى مجموعة بيانات واحدة مع أسماء الجداول كأسماء أوراق.*

'المتغيرات العالمية

خافت excelSheetNames كسلسلة ()

Dim DtSet As System.Data.DataSet = New DataSet()

الخاص الفرعي btnLoadData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) يعالج btnLoadData.Click

تعتيم MyConnection باسم OleDbConnection

خافت من System.Data.OleDb.OleDbDataAdapter

خافت ط كعدد صحيح

MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;

مصدر البيانات=SStatus.xls;الخصائص الموسعة = ""Excel 8.0;HDR=NO;IMEX=1"" ")

'تحصل الطريقة التالية على جميع أسماء أوراق 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

الوظيفة العامة GetExcelSheetNames (ByVal excelFileName كسلسلة)

    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
scroll top