0

クエリのレコードをに保存しようとしましたDataRowが、作成できませんでした。助けが必要かもしれません。これは私のコードです:

private DataSet CreateDataSet()
{
    DataSet ds = new DataSet();

    // create Countries table and columns
    DataTable dtApplications = ds.Tables.Add("Applications");
    DataColumn dtApplicationID = dtApplications.Columns.Add("ApplicationID", typeof(int));
    DataColumn dtApplicationName= dtApplications.Columns.Add("ApplicationName", typeof(string));

    DataTable dt = new DataTable();
    SqlConnection con = new SqlConnection(MoahannedConnectionString);
    SqlCommand cmd1 = new SqlCommand("select AppID,AppName from Application", con);
    SqlDataAdapter da = new SqlDataAdapter();
    SqlDataReader sdr = null;
    dt.TableName = "Application";
    con.Open();
    sdr = cmd1.ExecuteReader();
    while (sdr.Read())
    {
       AddDataToTable(dtApplicationID, dtApplicationName, dtApplications, ds);
    }
}

private void AddDataToTable(DataColumn ID, DataColumn Name, DataTable myTable,DataSet ds)
{
    DataRow row;
    row = myTable.NewRow();
    row["ApplicationID"] = ID;
    row["ApplicationName"] = Name;
    myTable.Rows.Add(row);
}
4

1 に答える 1

0

DataAdapter直接使用して:をロードできますDataTable

using(var da = new SqlDataAdapter("select AppID,AppName from Application", con))
{
    da.Fill(dt);
}

上記のコードの残りの部分は、私の意見では冗長です。

補足:レコードのフィールドをDataRowのフィールドに渡したいため、例外が発生します。しかし、実際にはあなたは合格していDataColumnます。

これは機能しますが、不要です。

row["ApplicationID"] = sdr.GetInt32(sdr.GetOrdinal("ApplicationID"));
row["ApplicationName"] = sdr.GetString(sdr.GetOrdinal("ApplicationName"));

あなたはどこsdrにいますかDataReader

于 2012-09-09T10:58:56.793 に答える