web-dev-qa-db-fra.com

Imprimer le contenu d'un DataTable

Actuellement, j'ai un code qui cherche une table de base de données via une connexion SQL et insère les cinq premières lignes dans un Datatable (Table).

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

    SqlDataAdapter _dap = new SqlDataAdapter(_cmd);

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

Comment puis-je imprimer le contenu de ce tableau sur la console pour que l'utilisateur le voie?

Après avoir fouillé, est-il possible que je lie le contenu à une liste, ou existe-t-il un moyen de les imprimer directement? Je ne m'intéresse pas à la conception à ce stade, mais aux données.

Tous les indicateurs seraient géniaux, merci!

14
William

vous pouvez essayer ce code:

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

Mise à jour 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);
       }
      }
26
Arshad

Imprimer lignes de contenu datatable avec colonne

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

Voici une autre solution qui vide la table dans une chaîne séparée par des virgules:

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

Ceci est fait par table de données qui contient une seule table

        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());

Ceci est fait par le jeu de données qui contient le jeu de table

        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());

les deux donneront le même résultat. seul le jeu de données contient le numéro d'index de la table.

1
Veer Jangid