web-dev-qa-db-fra.com

Comment convertir DataSet en DataTable

Je récupère des données d'une table SQL afin de pouvoir afficher le résultat sur la page sous forme de table HTML. Plus tard, je dois pouvoir sauvegarder cette table en tant que fichier CSV.

Jusqu'à présent, j'ai trouvé comment récupérer les données et les renseigner dans un jeu de données à des fins d'affichage (qui fonctionne parfaitement) ...

        string selectQuery = "SELECT Name, ProductNumber, ListPrice FROM Poduction.Product";

        // Establish the connection to the SQL database 
        SqlConnection conn = ConnectionManager.GetConnection();
        conn.Open();

        // Connect to the SQL database using the above query to get all the data from table.
        SqlDataAdapter myCommand = new SqlDataAdapter(selectQuery, conn);

        // Create and fill a DataSet.
        DataSet ds = new DataSet();
        myCommand.Fill(ds);

et comment les enregistrer dans un fichier CSV à l'aide du code suivant, provenant de: http://www.evontech.com/login/topic/1983.html

    private void exportDataTableToCsv(DataTable formattedDataTable, string filename)
    {
       DataTable toExcel = formattedDataTable.Copy();
       HttpContext context = HttpContext.Current;
       context.Response.Clear();

       foreach (DataColumn column in toExcel.Columns)
       {
          context.Response.Write(column.ColumnName + ",");
       }

       context.Response.Write(Environment.NewLine);
       foreach (DataRow row in toExcel.Rows)
       {
          for (int i = 0; i < toExcel.Columns.Count; i++)
          {
             context.Response.Write(row.ToString().Replace(",", string.Empty) + ",");
          }

          context.Response.Write(Environment.NewLine);
       }

       context.Response.ContentType = "text/csv";
       context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ".csv");
       context.Response.End();
    }

Maintenant, mon problème est de savoir comment convertir cette DataSet en DataTable? J'ai essayé la façon décrite ici avec [~ # ~] non [~ # ~] chance: http: //www.ezineasp .net/post/ASP-Net-C-sharp-Convert-DataSet-to-DataTable.aspx

Quelqu'un peut-il m'aider?

36
AlwaysANovice

Un DataSet déjà contientDataTables. Vous pouvez simplement utiliser:

DataTable firstTable = dataSet.Tables[0];

ou par nom:

DataTable customerTable = dataSet.Tables["Customer"];

Notez que vous devez avoir les instructions using pour votre code SQL, afin de vous assurer que la connexion est correctement mise au rebut:

using (SqlConnection conn = ...)
{
    // Code here...
}
105
Jon Skeet

DataSet est une collection de DataTables .... vous pouvez obtenir le datatable de DataSet comme ci-dessous.

//here ds is dataset
DatTable dt = ds.Table[0]; /// table of dataset
5
Pranay Rana

Voici ma solution:

DataTable datatable = (DataTable)dataset.datatablename;
1
MORFEE89