0

ストアド プロシージャから値のテーブルを取得する次のコードがあります。私の目標は、ストアド プロシージャから受け取ったテーブルを何らかのリストまたは IEnumerable に保存して、後でコードで処理することです。

ストアド プロシージャは、id と Name の 2 つの行を返します。テストのためにforeachループに値を書き込むために使用する場合を除いて、コードは正常に機能しています。値ではなく列名のみをリストします。

 string cs =ConfigurationManager.ConnectionStrings["con1"].ToString();
            string procName= "testing2";
            SqlConnection conn=new SqlConnection(cs);
            try
            {
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand(procName, conn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                DataSet ds = new DataSet();
                da.Fill(ds);
                ds.Tables[0].TableName = "Rows";
                foreach (DataColumn c in ds.Tables[0].Columns)
                {
                    c.ColumnMapping=MappingType.Attribute;
                    Console.WriteLine(c.ColumnName.ToArray());
                }
            }
            catch (Exception e)
            {
                Console.Write("Error" + e);
            }
            finally
            {

                conn.Close();

            }

値の代わりに列名を書いているだけの次の2行のコードで間違いを犯していると思います:

c.ColumnMapping=MappingType.Attribute;
Console.WriteLine(c.ColumnName.ToArray());

それを修正する方法はありますか?ありがとう

4

3 に答える 3

0

私はあなたがこれを望んでいると信じています:

Console.WriteLine(c.ColumnName.ToArray() + ": " + c.ToNullSafeString());
于 2013-06-13T16:56:48.200 に答える
0

行コレクションにループする必要があるのは、行の値を出力したい場合であり、単一の列の値を含む ItemArray の行ごとに -

foreach (DataRow r in ds.Tables[0].Rows)
{
   for(int x = 0; x < r.ItemArray.Length; x++)
       Console.WriteLine(r.ItemArray[x].ToString());
   Console.WriteLine();    
}

もちろんこれはほんの一例です。null 値などの状況を処理するには、より堅牢なコードが必要です。

于 2013-06-13T16:57:52.510 に答える