Ich führe eine paramterisierte SQL Stored Procedure aus, die zwei Select-Anweisungen ausführt. Ich möchte dem zurückgegebenen Ergebnis eine DataSet()
zur einfacheren Verarbeitung zuweisen. Doch meiner Syntax bekomme ich einen Fehler vonIterieren von DataSet-Tabellen
Typ ‚System.Data.DataTable‘ auf ‚System.Data.DataSet‘ konvertierenkann nicht implizit
Kann mir jemand zeigen, wie zu tun, was Ich bin nach hier? - Anstatt darauf als ds.Tables[0];
zu verweisen, möchte ich einen aussagekräftigen Namen zuordnen.
public DataSet RunOneStoredProc()
{
DataSet dataset = new DataSet();
using (var conn = new SqlConnection(SQLCon))
{
var cmd = new SqlCommand("GetTeachersStudents", conn);
cmd.Parameters.Add("@yearstart", SqlDbType.Date, 100);
cmd.Parameters.Add("@yearend", SqlDbType.Date, 100);
cmd.Parameters["@yearstart"].Value = dtpStartDate.Value.ToString("MM/dd/yyyy");
cmd.Parameters["@yearend"].Value = dtpEndDate.Value.ToString("MM/dd/yyyy");
cmd.CommandType = CommandType.StoredProcedure;
var ds = new DataSet();
using (var da = new SqlDataAdapter(cmd))
da.Fill(ds);
return dataset;
}
}
private void btnPush_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
DataSet teachers = new DataSet();
DataSet students = new DataSet();
ds = RunOneStoredProc();
teachers = ds.Tables[0];
students = ds.Tables[1];
}
Wenn Sie den Index nicht für den Zugriff auf die verschiedenen Tabellen im Datensatz verwenden möchten, können Sie Namen verwenden. 'DataTable Lehrer = ds.Tables [" Lehrer "];' –
Sie sagten, ich erstelle eine neue Instanz von ds. Meinst du entfernen Sie die DataSet-DS-Deklaration von RunOneStoredProc()? –
Sie müssen keine weitere Instanz von DataSet erstellen. DataSet ds = new DataSet(); 'Weil' RunOneStoredProc() 'bereits eine neue Instanz zurückgibt. –