web-dev-qa-db-ja.com

DataTableの内容を印刷する

現在、SQL接続を介してデータベーステーブルを検索し、上位5行をDatatable(テーブル)に挿入するコードがあります。

using(SqlCommand _cmd = new SqlCommand(queryStatement, _con))
{
    DataTable Table = new DataTable("TestTable");

    SqlDataAdapter _dap = new SqlDataAdapter(_cmd);

    _con.Open();
    _dap.Fill(Table);
    _con.Close();
}

ユーザーが表示できるように、このテーブルの内容をコンソールに出力するにはどうすればよいですか?

掘り下げた後、コンテンツをリストビューにバインドする必要がありますか、それとも直接印刷する方法はありますか?私はこの段階での設計ではなく、データだけに関心があります。

どんなポインタも素晴らしいでしょう、ありがとう!

19
William

このコードを試すことができます:

foreach (DataRow dataRow in Table.Rows)
  {
   foreach (var item in dataRow.ItemArray)
   {
    Console.WriteLine(item);
   }
  }

更新1

 DataTable Table = new DataTable("TestTable");
 using(SqlCommand _cmd = new SqlCommand(queryStatement, _con))
    {        
       SqlDataAdapter _dap = new SqlDataAdapter(_cmd);
       _con.Open();
       _dap.Fill(Table);
       _con.Close();

      }
 Console.WriteLine(Table.Rows.Count);  
 foreach (DataRow dataRow in Table.Rows)
      {
       foreach (var item in dataRow.ItemArray)
       {
        Console.WriteLine(item);
       }
      }
32
Arshad

列を持つDatatableコンテンツの行を印刷する

Here is solution 

DataTable datatableinfo= new DataTable();

// Fill data table 

//datatableinfo=fill by function or get data from database

//Print data table with rows and column


for (int j = 0; j < datatableinfo.Rows.Count; j++)
{
    for (int i = 0; i < datatableinfo.Columns.Count; i++)    
        {    
            Console.Write(datatableinfo.Columns[i].ColumnName + " ");    
            Console.WriteLine(datatableinfo.Rows[j].ItemArray[i]); 
        }
}


Ouput :
ColumnName - row Value
ColumnName - row Value
ColumnName - row Value
ColumnName - row Value
1
Sameer Bahad

次に、テーブルをカンマ区切りの文字列にダンプする別のソリューションを示します。

using System.Data;

public static string DumpDataTable(DataTable table)
        {
            string data = string.Empty;
            StringBuilder sb = new StringBuilder();

            if (null != table && null != table.Rows)
            {
                foreach (DataRow dataRow in table.Rows)
                {
                    foreach (var item in dataRow.ItemArray)
                    {
                        sb.Append(item);
                        sb.Append(',');
                    }
                    sb.AppendLine();
                }

                data = sb.ToString();
            }
            return data;
        }
1
Russell Gantman

これは、単一のテーブルを保持するデータテーブルによって行われます

        SqlConnection con = new SqlConnection(constr);
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from info", con);
        SqlDataAdapter ad = new SqlDataAdapter(cmd);

        DataTable dt = new DataTable();
        ad.Fill(dt);
        Console.WriteLine(dt.Columns[0].ColumnName.ToString());
        Console.WriteLine(dt.Rows[1].ItemArray[0].ToString());

これは、テーブルのセットを保持するデータセットによって行われます

        SqlConnection con = new SqlConnection(constr);
        con.Open();
        SqlCommand cmd = new SqlCommand("select * from info", con);
        SqlDataAdapter ad = new SqlDataAdapter(cmd);

        DataSet dt = new DataSet();
        ad.Fill(dt);
        Console.WriteLine(dt.Tables[0].Columns[0].ColumnName.ToString());
        Console.WriteLine(dt.Tables[0].Rows[0].ItemArray[0].ToString());

どちらも同じ結果になります。データセットのみにテーブルのインデックス番号が含まれます。

1
Veer Jangid