TSQLmod Download
Klasse db (Connection String)
benötigt in erster Linie die SQL Instanz. Nachdem das Objekt erfolgreich initialisiert wurde, wird auch gleichzeitig die Verbindung aufgemacht und die folgenden Methoden können genutzt werden.
LookUP(…)
gibt aus einem SQL Query den ersten Treffer der angegebenen Spalte als String wieder. Ideal um einen Wert aus der Datenbank auszulesen. Möglich ist es entweder die Spaltennummer oder den Spaltennamen anzugeben.
getRowList(…)
gibt eine List<string> oder generische List<T> von der angegebenen Spalte zurück. Man erhält quasi aus dem Select eine gewünschte Spalte
getRowStringBuilder(…)
ähnlich wie die getRowList(…) ist der Rückgabewert aber ein Stringbuilder, in welchen alle Zeilen einer selektierten Spalte enthalten sind.
getDynamicList(…)
erfordert eine Klasse welche dieselben Datentypen und Bezeichnung hat wie das SQL Select. Als Rückgabe erhält man man eine List<meineKlasse>, welche 1:1 so viele Elemente und Spalten hat wie das Sql Query. Das ganze arbeitet nicht mit Reflektionen, sondern nach dem Prinzip von diesem genialen Autor: KLICK
Dazu jeweils ein Beispiel. Ausgehend vom folgenden Select:
einem erstellten Objekt der Klasse db:
1 |
db db = new db("Data Source=XXXXX;Initial Catalog=AdventureWorks2014;Integrated Security=True"); |
und ein string mit folgendem select:
1 |
string sql = "SELECT TOP 20 [ContactTypeID], [Name], [ModifiedDate] FROM [AdventureWorks2014].[Person].[ContactType]"; |
LookUp(…)
1 2 |
string sql = "SELECT TOP 20 [ContactTypeID], [Name], [ModifiedDate] FROM [AdventureWorks2014].[Person].[ContactType]"; MessageBox.Show(db.LookUP(sql + "where ContactTypeID = 13", "Name")); |
Antwort:
getRowList(…)
1 2 |
string sql = "SELECT TOP 20 [ContactTypeID], [Name], [ModifiedDate] FROM [AdventureWorks2014].[Person].[ContactType]"; var nameList = db.getRowList<string>(sql, 1); |
Antwort:
getRowStringBuilder(…)
1 2 3 |
string sql = "SELECT TOP 20 [ContactTypeID], [Name], [ModifiedDate] FROM [AdventureWorks2014].[Person].[ContactType]"; StringBuilder sb = db.getRowStringBuilder(sql, 0); MessageBox.Show(sb.ToString()); |
Antwort:
getDynamicList(…)
Wie oben bereits erwähnt, ist hierfür eine Klasse mit Propertys notwendig. Diese kann man ganz einfach auch mit den Methoden aus CreateClass – Klasse erstellen. Dazu weiter unten.
1 2 3 4 5 6 7 8 |
public class ContactType { public int ContactTypeID { get; set; } public string Name { get; set; } public DateTime ModifiedDate { get; set; } } |
dann kann man so eine dynamische Liste ganz einfach erstellen:
1 2 |
string sql = "SELECT TOP 20 [ContactTypeID], [Name], [ModifiedDate] FROM [AdventureWorks2014].[Person].[ContactType]"; var dynList = db.getDynamicList(new ContactType(), sql); |
diese Liste kann man nun z.B. einem Datagrid aus WPF zuordnen:
1 2 |
XAML Code: <DataGrid x:Name="grSql" VerticalAlignment="Top" AutoGeneratingColumn="grSql_AutoGeneratingColumn"/> |
1 2 |
C# Code: grSql.ItemsSource = dynList; |
Das ganze sieht dann so aus:
wem das Datumsformat stört, der kann dem Ereignis AutogeneratingColumn aus dem Datagrid eine Änderung des Datumsformates durchführen:
folgendes soll nun passieren, wenn das Ereignis eintrifft:
1 2 3 4 5 |
private void grSql_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyType == typeof(System.DateTime)) (e.Column as DataGridTextColumn).Binding.StringFormat = "dd.MM.yyyy"; } |
Nun sieht das ganze so aus:
Login