Offline Modus Verbesserungen, SMB Share für User FIX
This commit is contained in:
127
Dokumentation/Classes/cSQLSync.vb
Normal file
127
Dokumentation/Classes/cSQLSync.vb
Normal file
@@ -0,0 +1,127 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Data.SQLite
|
||||
Imports System.IO
|
||||
Public Class cSQLSync
|
||||
|
||||
|
||||
|
||||
Dim sqlConnString As String = Class1.DBDoku
|
||||
Dim sqliteFile As String = "C:\verag\offline_db.sqlite"
|
||||
Dim sqliteConnString As String = $"Data Source={sqliteFile};Version=3;"
|
||||
|
||||
Property TbL As String
|
||||
|
||||
Sub Main()
|
||||
' Falls die lokale Datenbank nicht existiert, erstelle sie
|
||||
If Not File.Exists(sqliteFile) Then
|
||||
SQLiteConnection.CreateFile(sqliteFile)
|
||||
|
||||
End If
|
||||
|
||||
' Daten synchronisieren
|
||||
'CreateLocalTables()
|
||||
|
||||
SyncDatabase()
|
||||
End Sub
|
||||
|
||||
' Erstellt Tabellen in der lokalen SQLite-Datenbank
|
||||
Sub CreateLocalTables()
|
||||
Using sqliteConn As New SQLiteConnection(sqliteConnString)
|
||||
Dim convert As New cSQL2SQLLite
|
||||
sqliteConn.Open()
|
||||
Dim sql As String = convert.Main(TbL)
|
||||
Using cmd As New SQLiteCommand(sql, sqliteConn)
|
||||
cmd.ExecuteNonQuery()
|
||||
End Using
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
' Synchronisiert Daten von SQL Server zu SQLite
|
||||
Sub SyncDatabase()
|
||||
Using sqlConn As New SqlConnection(sqlConnString)
|
||||
sqlConn.Open()
|
||||
|
||||
' TbL_Netzwerkclients-Daten abrufen
|
||||
Dim sqlQuery As String = "SELECT * FROM TbL_Netzwerkclients"
|
||||
Using sqlCmd As New SqlCommand(sqlQuery, sqlConn)
|
||||
Using reader As SqlDataReader = sqlCmd.ExecuteReader()
|
||||
Using sqliteConn As New SQLiteConnection(sqliteConnString)
|
||||
sqliteConn.Open()
|
||||
|
||||
' Einfügen oder Aktualisieren (Upsert)
|
||||
While reader.Read()
|
||||
Dim upsertQuery As String = "INSERT INTO TbL_Netzwerkclients (
|
||||
IPAdresse, FQDN, QINFO, NETNAME, Seriennummer, MAC, Benutzer, Passwort, LINK, INFO, TYPE, HOST, NWSTANDORT, Modell,
|
||||
Linked, LinkedWith, AddIP, Standort, DHCP, Netzwerk, Firewall, TeamviewerID, TeamviewerKennwort, SSHPort, AnydeskID, AnydeskPassword
|
||||
) VALUES (
|
||||
@IP, @FQDN, @QINFO, @NETNAME, @Seriennummer, @MAC, @Benutzer, @Passwort, @LINK, @INFO, @TYPE, @HOST, @NWSTANDORT, @Modell,
|
||||
@Linked, @LinkedWith, @AddIP, @Standort, @DHCP, @Netzwerk, @Firewall, @TeamviewerID, @TeamviewerKennwort, @SSHPort, @AnydeskID, @AnydeskPassword
|
||||
)
|
||||
ON CONFLICT(IPAdresse) DO UPDATE SET
|
||||
FQDN = excluded.FQDN,
|
||||
QINFO = excluded.QINFO,
|
||||
NETNAME = excluded.NETNAME,
|
||||
Seriennummer = excluded.Seriennummer,
|
||||
MAC = excluded.MAC,
|
||||
Benutzer = excluded.Benutzer,
|
||||
Passwort = excluded.Passwort,
|
||||
LINK = excluded.LINK,
|
||||
INFO = excluded.INFO,
|
||||
TYPE = excluded.TYPE,
|
||||
HOST = excluded.HOST,
|
||||
NWSTANDORT = excluded.NWSTANDORT,
|
||||
Modell = excluded.Modell,
|
||||
Linked = excluded.Linked,
|
||||
LinkedWith = excluded.LinkedWith,
|
||||
AddIP = excluded.AddIP,
|
||||
Standort = excluded.Standort,
|
||||
DHCP = excluded.DHCP,
|
||||
Netzwerk = excluded.Netzwerk,
|
||||
Firewall = excluded.Firewall,
|
||||
TeamviewerID = excluded.TeamviewerID,
|
||||
TeamviewerKennwort = excluded.TeamviewerKennwort,
|
||||
SSHPort = excluded.SSHPort,
|
||||
AnydeskID = excluded.AnydeskID,
|
||||
AnydeskPassword = excluded.AnydeskPassword;"
|
||||
|
||||
Using upsertCmd As New SQLiteCommand(upsertQuery, sqliteConn)
|
||||
upsertCmd.Parameters.AddWithValue("@IP", reader("IPAdresse"))
|
||||
upsertCmd.Parameters.AddWithValue("@FQDN", reader("FQDN"))
|
||||
upsertCmd.Parameters.AddWithValue("@QINFO", reader("QINFO"))
|
||||
upsertCmd.Parameters.AddWithValue("@NETNAME", reader("NETNAME"))
|
||||
upsertCmd.Parameters.AddWithValue("@Seriennummer", reader("Seriennummer"))
|
||||
upsertCmd.Parameters.AddWithValue("@MAC", reader("MAC"))
|
||||
upsertCmd.Parameters.AddWithValue("@Benutzer", reader("Benutzer"))
|
||||
upsertCmd.Parameters.AddWithValue("@Passwort", reader("Passwort"))
|
||||
upsertCmd.Parameters.AddWithValue("@LINK", reader("LINK"))
|
||||
upsertCmd.Parameters.AddWithValue("@INFO", reader("INFO"))
|
||||
upsertCmd.Parameters.AddWithValue("@TYPE", reader("TYPE"))
|
||||
upsertCmd.Parameters.AddWithValue("@HOST", reader("HOST"))
|
||||
upsertCmd.Parameters.AddWithValue("@NWSTANDORT", reader("NWSTANDORT"))
|
||||
upsertCmd.Parameters.AddWithValue("@Modell", reader("Modell"))
|
||||
upsertCmd.Parameters.AddWithValue("@Linked", reader("Linked"))
|
||||
upsertCmd.Parameters.AddWithValue("@LinkedWith", reader("LinkedWith"))
|
||||
upsertCmd.Parameters.AddWithValue("@AddIP", reader("AddIP"))
|
||||
upsertCmd.Parameters.AddWithValue("@Standort", reader("Standort"))
|
||||
upsertCmd.Parameters.AddWithValue("@DHCP", reader("DHCP"))
|
||||
upsertCmd.Parameters.AddWithValue("@Netzwerk", reader("Netzwerk"))
|
||||
upsertCmd.Parameters.AddWithValue("@Firewall", reader("Firewall"))
|
||||
upsertCmd.Parameters.AddWithValue("@TeamviewerID", reader("TeamviewerID"))
|
||||
upsertCmd.Parameters.AddWithValue("@TeamviewerKennwort", reader("TeamviewerKennwort"))
|
||||
upsertCmd.Parameters.AddWithValue("@SSHPort", reader("SSHPort"))
|
||||
upsertCmd.Parameters.AddWithValue("@AnydeskID", reader("AnydeskID"))
|
||||
upsertCmd.Parameters.AddWithValue("@AnydeskPassword", reader("AnydeskPassword"))
|
||||
|
||||
upsertCmd.ExecuteNonQuery()
|
||||
End Using
|
||||
End While
|
||||
End Using
|
||||
End Using
|
||||
End Using
|
||||
End Using
|
||||
Console.WriteLine("Synchronisation abgeschlossen!")
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user