Ich mache eine grundlegende Sache in C# (MS VS2008) und habe eine Frage mehr über das richtige Design als spezifischen Code.Füllen Sie Datentabelle aus Datenleser
Ich erstelle eine Datentabelle und versuche dann, die Datentabelle von einem Datenreader (der auf einer gespeicherten SQL-Prozedur basiert) zu laden. Ich frage mich, ob der effizienteste Weg, die Datentabelle zu laden, eine while-Anweisung ist oder ob es einen besseren Weg gibt.
Für mich ist der einzige Nachteil, ich muss manuell die Felder eingeben, die ich in meiner while-Anweisung hinzufügen möchte, aber ich weiß auch nicht, wie man das sowieso automatisieren kann, da ich nicht alle Felder von der SP nur wählen, aber das ist nicht eine große Sache in meinen Augen.
Ich habe Code-Schnipsel unter die Totalität von dem, was ich tue, obwohl für mich der Code selbst nicht bemerkenswert ist oder sogar, worum ich frage. Wenn ich mich auch über meine Methodik wundere, werde ich später nach Code-Hilfe fragen, wenn meine Strategie falsch/ineffizient ist.
var dtWriteoffUpload = new DataTable();
dtWriteoffUpload.Columns.Add("Unit");
dtWriteoffUpload.Columns.Add("Year");
dtWriteoffUpload.Columns.Add("Period");
dtWriteoffUpload.Columns.Add("Acct");
dtWriteoffUpload.Columns.Add("Descr");
dtWriteoffUpload.Columns.Add("DEFERRAL_TYPE");
dtWriteoffUpload.Columns.Add("NDC_Indicator");
dtWriteoffUpload.Columns.Add("Mgmt Cd");
dtWriteoffUpload.Columns.Add("Prod");
dtWriteoffUpload.Columns.Add("Node");
dtWriteoffUpload.Columns.Add("Curve_Family");
dtWriteoffUpload.Columns.Add("Sum Amount");
dtWriteoffUpload.Columns.Add("Base Curr");
dtWriteoffUpload.Columns.Add("Ledger");
cmd = util.SqlConn.CreateCommand();
cmd.CommandTimeout = 1000;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_writeoff_data_details";
cmd.Parameters.Add("@whoAmI", SqlDbType.VarChar).Value =
WindowsIdentity.GetCurrent().Name;
cmd.Parameters.Add("@parmEndDateKey", SqlDbType.VarChar).Value = myMostRecentActualDate;
cmd.Parameters.Add("@countrykeys", SqlDbType.VarChar).Value = myCountryKey;
cmd.Parameters.Add("@nodekeys", SqlDbType.VarChar).Value = "1,2";
break;
dr = cmd.ExecuteReader();
while (dr.Read())
{
dtWriteoffUpload.Rows.Add(dr["country name"].ToString(), dr["country key"].ToString());
}
Doppelte Frage: http://StackOverflow.com/Questions/4089471/How-do-Ifill-a-Datatable-using-Datareader – vapcguy