tragl schrieb:
-mit {VARIABLE} können generell Variablen abgerufen werden? Oder "nur" in z.B. einem SQL-String? Ich kenn das nur mit & VARIABLE & - was dann auf den
ersten Blick den Code unübersichtlich machen kann. mit den {} finde ich schöner.
-das $-Zeichen vor dem Connect-String bewirkt genau was?
Das ist ein neueres Feature von .Net, es heisst "String-Interpolation". Strings mit String-Interpolation sind gekennzeichnet durch vorangestelltes
$
. Wenn dem so ist, kann man innerhalb des Strings Variablen einfügen, in {}
. Das verbessert die Leserlichkeit erheblich.Aber googel das: "String-Interpolation"
Jo, ich hab auch ohne Buch gelernt - aber das hat gedauert.
Effizient ist ein Buch lesen.
Mindestens wenn du mit was in Berührung kommst, dieses im Buch nachlesen. Wirst feststellen, dann kann son langweiliges Buch auf einmal ganz spannend sein - weil einem so allerlei Zusammenhänge aufgehen.
Ja - das gehört zum Verhalten des Using-Blocks.tragl schrieb:
EDIT: Frage3: Schließt er denn die Verbindung wenn ein Fehler auftreten sollte?
Wie gesagt: Nachlesen (am Besten im Löffelmann-Buch, aber Kühnel/Leibhard ist glaub ebensogut, und ist Online, während Löffi nur Pdf ist - jdfs. beides kostenlos)
Das ist, wo ein Buch unschlagbar ist: Die Zusammenhänge aufzeigen zB. zwischen Interfaces im Allgemeinen, IDisposable-Interface im Besonderen, und den Eigenheiten eines Using-Blocks.
Perfektes Beispiel für die Nützlichkeit eines Buches.
Wie gesagt: Im Inet findste alle möglichen Tuts (es sind auch gute dabei, aber findest du die?), Aber diese Dinge sind zu wichtig, um sich da mit Halbwissen zufriedenzugeben.
Ups - nein - die Verbindung schliesst nicht!
Die würde schliessen, wenn die Connection selbst im UsingBlock instanziert würde, wird sie aber garnet - die kommt ja iwie aus der Luft geflogen.
Also da muss Try-Finally her:
VB.NET-Quellcode
- Public Sub DB_tree_lesen2(Datenbank As String, Tabelle As String, TV As TreeView)
- TV.Nodes.Clear()
- DB_connect(Datenbank)
- Dim noAdminSegment = If(My.Settings.AppMode = "User", " AND (nur_admin = False)", "")
- Dim sql = $"SELECT * FROM `{Tabelle}` WHERE (Aktiv = True){noAdminSegment} ORDER BY `Bezeichnung`"
- Dim nodeCollections = {TV.Nodes, Nothing, Nothing, Nothing} ' die untergeordneten NodeCollections werden im Verlauf eingetragen/aktualisiert
- Dim types = "rpc"
- Using adp = New OleDbDataAdapter(sql, con), tbl = New DataTable
- con.Open()
- Try
- adp.Fill(tbl)
- For Each rw As DataRow In tbl.Rows
- Dim iNodes = types.IndexOf(rw("Typ").ToString)
- 'Node zufügen und gleich untergeordnete NodeCollection in nodeCollections eintragen/aktualisieren
- nodeCollections(iNodes + 1) = nodeCollections(iNodes).Add(rw("Bezeichnung").ToString).Nodes
- Next
- Finally
- con.Close()
- End Try
- End Using
- End Sub
Also TryFinally wieder wegmachen.
(Aber vielleicht nachlesen - es besteht ein Zusammenhang mit Using!)
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „ErfinderDesRades“ ()