Entwickler-Ecke

Verteilte Systeme - Inhalt dynamischer SQL-Tabellen über WCF ermitteln


FrEEzE2046 - Mi 12.05.10 17:00
Titel: Inhalt dynamischer SQL-Tabellen über WCF ermitteln
Hallo,

ich habe einen WCF-Service, den ich über eine Silverlight WebSite kontaktiere. Dieser muss mir Auswertungen aus verschiedenen SQL-Tabellen (deren Aufbau dynamisch ist) ermitteln.

Dabei stellten sich mir zu Beginn zwei Fragen:
1. Wie kann ich dynamisch den Inhalt einer beliebigen Tabelle ermitteln?
2. Wie übermittele ich die Daten, deren Aufbau ich nicht kenne?


Zu Punkt 1: Habe ich jetzt folgende Möglichkeit in Betracht gezogen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
namespace ReadFromDynamicTable
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "";

            using (SqlConnection sql = new SqlConnection(connectionString))
            {
                sql.Open();

                SqlCommand select = new SqlCommand
                {
                    Connection = sql,
                    CommandText = "SELECT * FROM [Datenbank].[dbo].[Tabelle]"
                };

                using (SqlDataReader reader = select.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        int row = 0;

                        Dictionary<int, Dictionary<intobject>> Table = new Dictionary<int, Dictionary<intobject>>();
                        Dictionary<intobject> Column = null;

                        while (reader.Read())
                        {
                            Column = new Dictionary<intobject>();

                            for (int i = 0; i < reader.FieldCount; i++)
                                Column.Add(i, reader.GetValue(i));

                            Table.Add(row++, Column);
                        }

                        for (int i = 0; i < Table.Count; i++)
                        {
                            Console.WriteLine("----- Row " + Convert.ToString(i) + " -----");

                            for (int j = 0; j < Table[i].Count; j++)
                                Console.WriteLine(Table[i][j].ToString());

                            Console.WriteLine("--------------------------------------");
                        }
                    }
                }
            }
        }
    }
}


Ich bin mir sicher, dass es da noch eine bessere Möglichkeit als diese Dictionary Lösung gibt. Vor allem im Hinblick auf das versenden der Daten mit WCF.

Wie macht man so etwas am besten?


saekularfranke - Fr 14.05.10 09:02

Hallo,

ich denke es wäre eine Möglichkeit ein Dataset als
XML zu exportieren / oder in einer Auswertung zu verwenden.

Gruß


Kha - Fr 14.05.10 12:42

user profile iconFrEEzE2046 hat folgendes geschrieben Zum zitierten Posting springen:
Ich bin mir sicher, dass es da noch eine bessere Möglichkeit als diese Dictionary Lösung gibt. Vor allem im Hinblick auf das versenden der Daten mit WCF.
Mit Dictionarys sollte WCF keine Probleme haben, aber warum so kompliziert? Ein zeilenweise indiziertes Dictionary nenne ich normalerweise eine Liste.

C#-Quelltext
1:
2:
3:
var rows = new List<object[]>();
while (reader.Read())
  rows.Add(reader.GetValues());