2015-11-12 3 views
0

Я пытаюсь понять, как представить информацию, которую я (должен был) получить из SQL-запроса. Это мой код:с использованием DataSet в консольном приложении?

 this.cmd = connection.CreateCommand(); 
     this.cmd.CommandText = "SELECT * FROM servers WHERE id > " + x + " AND id < " + y; 
     this.adapter = new MySqlDataAdapter(this.cmd); 
     this.adapter.SelectCommand = this.cmd; 
     this.dataset = new DataSet(); 
     this.adapter.Fill(dataset); 
     return this.dataset; 

Как можно затем использовать this.dataset представить информацию, когда я использую консольное приложение? Спасибо

+0

Результаты запроса будут в первой таблице (и только таблице) в DataSet. Просто возьмите первую таблицу и запустите петлю строки, распечатав данные. – Tim

+0

Я не совсем понимаю, как это сделать, у вас есть пример? – user2454991

+0

Посмотрите это сообщение и посмотрите, поможет ли это. http://stackoverflow.com/questions/10822304/iterate-through-dataset – Nate

ответ

0
foreach (DataTable table in dataSet.Tables) 
{ 
    foreach (DataRow row in table.Rows) 
    { 
     foreach (DataColumn column in table.Columns) 
     { 
      object item = row[column]; 
      // read column and item 
      Console.WriteLine("item ", item); 
     } 
    } 
} 
+0

Это печатает все значения, по одному значению в строке. Думаю, это было бы некрасиво. Могли бы вы, возможно, создать свою реализацию, чтобы напечатать все заголовки столбцов, а затем иметь одну строку для каждой строки? – mason

+0

@ user2454991 не указал, как его представить. Просто дал ему какой-то намек. Правильно, было бы лучше добавить заголовки столбцов – Juran

0

Это удивительно привлекательный (но простой вопрос). Занятия, которые они использовали, с трудом работают. Я придумал базовую реализацию. Он не пытается выровнять строки в правильном столбце, но результат немного приятнее, чем у Juran's.

Главный ответ в методе расширения ToPrettyString(). Большинство других методов расширения - это просто, чтобы облегчить жизнь из-за недостатков в рамках.

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var ds = new DataSet(); 
      var customersTable = ds.Tables.Add("Customers"); 
      customersTable.Columns.AddRange("FirstName", "LastName", "Id", "Address"); 
      customersTable.Rows.Add("Bob", "Sagget", 1, "123 Mockingbird Lane"); 
      customersTable.Rows.Add("John", "Doe", 2, "1600 Pennsylvanie Ave"); 
      customersTable.Rows.Add("Jane", "Doe", 3, "100 Main St"); 

      Console.WriteLine(ds.ToPrettyString()); 
      Console.WriteLine("Press any key to exit."); 
      Console.ReadKey(); 
     } 
    } 

    static class ExtensionMethods 
    {  
     public static string ToPrettyString(this DataSet ds) 
     { 
      var sb = new StringBuilder(); 
      foreach (var table in ds.Tables.ToList()) 
      { 
       sb.AppendLine("--" + table.TableName + "--"); 
       sb.AppendLine(String.Join(" | ", table.Columns.ToList())); 
       foreach (DataRow row in table.Rows) 
       { 
        sb.AppendLine(String.Join(" | ", row.ItemArray)); 
       } 
       sb.AppendLine(); 
      } 
      return sb.ToString(); 
     } 

     public static void AddRange(this DataColumnCollection collection, params string[] columns) 
     { 
      foreach (var column in columns) 
      { 
       collection.Add(column); 
      } 
     }  

     public static List<DataTable> ToList(this DataTableCollection collection) 
     { 
      var list = new List<DataTable>(); 
      foreach (var table in collection) 
      { 
       list.Add((DataTable)table); 
      } 
      return list; 
     } 

     public static List<DataColumn> ToList(this DataColumnCollection collection) 
     { 
      var list = new List<DataColumn>(); 
      foreach (var column in collection) 
      { 
       list.Add((DataColumn)column); 
      } 
      return list; 
     } 
    } 
} 

Выход:

--Customers--

FirstName | LastName | Id | Адрес

Боб | Sagget | 1 | 123 Пересморокивая дорожка

John | Доу | 2 | 1600 Pennsylvanie Ave

Jane | Доу | 3 | 100 Main St