Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1549 | Anzahl registrierter User: 1833 | Besucher online: 2083
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

SimpleDb


Autor: Schullebernd
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 7360
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit SimpleDb können Datenbankabfragen leicht und komfortabel ausgelesen werden.
Der SimpleDbList wird einfach ein DbDataReader im Konstruktor übergeben. (Das funktioniert mit allen von DbDataReader abgeleiteten Klassen wie, OdcbDataReader oder OleDbDataReader).
Die Liste liest alle Zeilen aus und speichert jede in einem eigenen Objekt ab.
Der Zugriff auf die Spalten erfolgt einfach über die Spaltennamen, wie sie in der Datenbank vorhanden sind.



Abgelegt unter: Datenbank, Abfrage, SQL, DataReader, .



C#
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Data.Common;

namespace SimpleDb
{
    /// <summary>
    /// Ein Klasse zum Speichern einer Zeile aus einer Datenbankabfrage.
    /// Der Zugriff auf die Daten erfolgt über einen Index in Form einer Zeichenkette.
    /// </summary>
    public class SimpleDbObject
    {
        /// <summary>
        /// Speichert die Feldnamen und dazugehörige Werte
        /// </summary>
        private Hashtable m_Data;

        /// <summary>
        /// Erzeugt ein leeres SimpleDbObject
        /// </summary>
        public SimpleDbObject()
        {
            m_Data = new Hashtable();
        }

        /// <summary>
        /// Gibt den Inhalt des Feldes mit der Bezeichnung fieldName zurück oder setzt ihn.
        /// </summary>
        /// <param name="fieldName">Der Feldname, der angesprochen werden soll</param>
        /// <returns>Ein object, wenn es Daten zum gesuchten Feldnamen gibt oder NULL,
        /// wenn das Feld nicht existiert oder der gespeicherte Wert in der Datenbank NULL ist</returns>
        public object this[string fieldName]
        {
            get
            {
                object data = m_Data[fieldName.ToUpper()];
                if (data != null)
                {
                    if (data == DBNull.Value)
                    {
                        return null;
                    }
                    return data;
                }
                return null;
            }
            set
            {
                m_Data[fieldName] = value;
            }
        }

        /// <summary>
        /// Fragt ab, ob das ein bestimmtes Feld existiert
        /// </summary>
        /// <param name="fieldName">Der Feldname, dessen Existenz gesucht werden soll</param>
        /// <returns>TRUE, wenn das Feld existiert, sonst FALSE</returns>
        public bool FieldExists(string fieldName)
        {
            return m_Data.ContainsKey(fieldName.ToUpper());
        }

        /// <summary>
        /// Gibt eine ICollection zurück, die alle Feldnamen enthält
        /// </summary>
        public ICollection FieldNames
        {
            get
            {
                return m_Data.Keys;
            }
        }                
    }

    /// <summary>
    /// Eine Klasse zum Speichern von mehreren SimpleDbObjects.
    /// </summary>
    public class SimpleDbObjectList : ArrayList
    {

        /// <summary>
        /// Erzeugt eine neue leere SimpleDbObjectList
        /// </summary>
        public SimpleDbObjectList()
        {
        }

        /// <summary>
        /// Erzeugt eine neue SimepleDbObjectList und liest dabei ein komplettes Abfrageergebnis ein
        /// </summary>
        /// <param name="reader">Ein DbDataReader der durch DbCommand.ExecuteReader() erstellt wurde.</param>
        /// <exception cref="SimpleDb.SimpleDbException">Tritt ein, wenn ein Fehler beim Lesen aus dem DbDataReader auftritt</exception>
        public SimpleDbObjectList(DbDataReader reader)
        {
            try
            {
                while (reader.Read())
                {
                    SimpleDbObject obj = NewObject();
                    // Felder durchiterieren und Inhalte im Hashtable speichern
                    for (int iFieldPosition = 0; iFieldPosition < reader.FieldCount; iFieldPosition++)
                    {
                        obj[reader.GetName(iFieldPosition).ToUpper()] = reader[iFieldPosition];
                    }
                    this.Add(obj);
                }
            }
            catch (Exception ex)
            {
                throw new SimpleDbException("Fehler beim Aufbau der Liste.\nMeldung der Datenbankschnittstelle:\n" + ex.Message, ex);
            }
        }

        /// <summary>
        /// Gibt eine neue Instanz eines SimpleDbObjects zurück.
        /// Diese Methode muss von abgeleiteten Klassen überschrieben werden
        /// </summary>
        /// <returns>neues SimpleDbObject</returns>
        public virtual SimpleDbObject NewObject()
        {
            return new SimpleDbObject();
        }

        /// <summary>
        /// Fügt der Liste ein neues SimpleDbObject hinzu
        /// </summary>
        /// <param name="dataRow">Das SimpleDbObject, dass der Liste hinzugefügt werden soll</param>
        public void Add(SimpleDbObject dataRow)
        {
            base.Add(dataRow);
        }

        /// <summary>
        /// Gibt das Objekt an einer bestimmten Position zurück
        /// </summary>
        /// <param name="position">Der null-basierte Index, an dem das SimpleDbObject zurückgegeben werden soll</param>
        /// <returns>Das Objekt an der gewünschten Position</returns>
        public SimpleDbObject GetAt(int position)
        {
            return (SimpleDbObject)this[position];
        }
    }

    /// <summary>
    /// Stellt Fehler dar die beim Verwenden der SimpleDb-Klassen auftreten können
    /// </summary>
    public class SimpleDbException : Exception
    {
        /// <summary>
        /// Erzeugt eine neue SimpleDbException und legt den Meldungstext fest
        /// </summary>
        /// <param name="message">Der Meldungstext der Exception</param>
        public SimpleDbException(string message)
            : base(message)
        {
        }

        /// <summary>
        /// Erzeugt eine neue SimpleDbException und legt den Meldungstext und die
        /// Exception der Fehlerursache fest.
        /// </summary>
        /// <param name="message">Der Meldungstext der Exception</param>
        /// <param name="innerException">Die Exception die der Grund für diese Exception ist oder NULL, wenn keine Exception voraus ging</param>
        public SimpleDbException(string message, Exception innerException)
            : base(message, innerException)
        {
        }
    }
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[C#] ComboBox mit Inhalten aus Datenbank füllen
[C#] Backup und Restore einer SQL-Server-Datenbank über SMO
[C#] Datenbank-abfrage
[VB.NET] Mini-Sql-Command-Generator
[C#] Währungskurse in Datenbank speichern
[VB.NET] Convert DataGridViewRow nach DataRow
[VB.NET] Convert DataGridViewRow nach Objekt-Typ
[C#] Daten aus einer Datenbank in WPF darstellen
[C#] ASP.NET AJAX - Daten aus ADO.NET Data Services nutzen
[C#] Prüfen, ob exklusiver Zugriff auf eine Access-DB möglich ist
[C#] SMO : Alle Datenbanken einer Serverinstanz abfragen
[C#] Connection-String Dialog öffnen
[VB.NET] Erstellt aus einem Bytearray eine Temporäre Datei
[C#] Listen effektiv in ein Datenbankfeld speichern
[C#] ADO.NET Data Services mit einer Oracle-Datenbank
[C#] Datenbank als Webdienst in .NET 4.0 veröffentlichen
[C#] Mit LINQ to SQL auf eine Datenbank zugreifen
[C#] WPF Tutorial: Auf Datenbankinhalte mit WCF zugreifen
[C#] Datenbankverbindung herstellen
[C#] Schutz vor SQL-Injektion
[C#] Größe einer SQL-Server Datenbank ermitteln
[VB.NET] Größe einer SQL-Server Datenbank ermitteln
[VB.NET] Einfache Ähnlichkeitssuche (SQL)
[VB.NET] SQL INSERT-Stringbuilder Function
[C#] CSV und XML-Datei Datenbank-Import (incl. valid-check)
[C#] Text Resourcen aus Assembly auslesen
[C#] T-SQL-Stored-Proc Generieren
[VB.NET] DataGridView Databinding mit LINQtoSQL
[VB.NET] Master-Detail Ansicht auf SQL Server-Daten mit LINQ-to-SQL
[C#] SQL Server Daten in Exel-Datei exportieren mit LINQ
[C#] Hole alle Datenbanken eines SQL Servers
[C#] SqlDataSource.FilterExpression auf Bitflag filtern
[VB.NET] SQLCMD Parameter debuggen
[C#] Trivialer Datenbankzugriff
[C#] Fire-and-forget SQL-query (in 3 Zeilen)
[C#] Using Statement am Beispiel eines DataReaders
[C#] Integers
[C#] Search Plugin-DLLs with one line
[C#] sehr einfacher Timer
[C#] BindingList mit Sortierfunktion
[C#] Datei öffnen
[C#] ListView Spalten sortieren
[C#] byte-String in byte wandeln
[C#] Excel Spalten Bezeichnung nach Integer
[C#] Prozentual Textvergleichen
[C#] Console in eigene Form einbinden
[C#] Programm am Desktop andocken
[C#] lokale User und Gruppen administrieren
[C#] Primärschlüsselwerte ermitteln
[C#] Automatisches Umbenennen eines Pfades
[C#] URL auslesen
[C#] Silverlight Anwendung erstellen
[C#] Text codieren
[VB.NET] ''Enter'' in TextBox
[C#] Programm RUN Check
[C#] Zufälliger Eintrag aus einer Liste (Extension Method)
[C#] XAML Grundlagen in Silverlight 3
[C#] MakeNiceSize()
[C#] 22 System Pfade abfragen
[C#] Zahlensysteme (BIN, HEX, OCT, DEZ) umrechnen
[C#] Erzeugen von Zeichenfolgen durch Permutation
[C#] Form ohne Rahmen verschieben
[C#] Byte-Array in Struktur kopieren
[VB.NET] Treenode-Tags zur verwendung abfragen [für Anfänger]
[C#] String to char Tarnung

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.