Ich habe an einem neuen Feature der sQLshell gearbeitet, das die manuelle Dateiengabe extrem vereinfacht.
Dabei wollte ich das Problem adressieren, das bei der manuellen Eingabe von Daten in ein Datenmodell entsteht, das referentielle Integrität über Fremdschlüsselbeziehungen sicherstellt:
Daten werden in so einem Modell meist eingegeben, indem Datensätze in verschiedenen Tabellen hinzugefügt werden, die die Schlüssel der neuen Datensätze in anderen Tabellen benötigen, um sie korrekt in die Fremdschlüsselspalten einzufügen. Das ist noch einfach - wenn auch mühsam - wenn diese Schlüssel nicht automatisch gefüllt, sondern explizit spezifiziert werden. Schwierig wird es aber, wenn es sich um Autoincrement-Spalten handelt oder die Werte der Schlüsselspalten auf andere Art und Weise im Datenbankmanagementsystem erzeugt werden - etwa über Formeln (Beispiel: Benutzung von NOW() zur Erzeugung der Werte für Timestamp-Spalten).
Daher hat die sQLshell nun einen Mechanismus, sich an die Werte (alle - sowohl die explizit angegebenen, wie auch die generierten) der letzten neu hinzugefügten Zeile einer jeden Tabelle zu erinnern und diese Werteentsprechend vorzuschlagen, wo es passt: Damit ist zum Beispiel der Dialog zum Einfügen einer neuen Zeile in eine Tabelle, die Fremdschlüssel von anderen importiert, nicht mehr komplett leer - die entsprechenden ComboBoxen in der GUI sind mit den zuletzt eingefügten Werten der entsprechenden Spalten der importierten Tabellen vorbefüllt.
Das funktioniert auch, wenn eine Tabelle mehrere Fremdschlüssel importiert: So lange in allen importierten Tabellen in der aktuellen Sitzung neue Zeilen eingefügt wurden, sind diese bereits in den ComboBoxen diesem Dialog vorbefüllt!
Dieser Mechanismus funktioniert sowohl für die Erstellung neuer Zeilen übder die GUI der sQLshell als auch über INSERT Statements im SQL-Editor. Auch neue Zeilen, die über Plugins eingefügt werden, werden in diesen Mechanismus einbezogen. Lediglich direkt über ein PreparedStatement eingefügte Zeilen können dafür nicht berücksichtigt werden.
Würden etwa in einem Datenmodell, das eine M-zu-N Beziehung wie folgt definiert:
Modell einer M-zu-N Beziehung
neue Datensätze in die Tabellen author und publication eingefügt, indem die folgenden Anweisungen in der sQLshell im SQL-Editor ausgeführt würden
INSERT INTO author (id, name) VALUES (10000, 'Jules Verne');
INSERT INTO publication (id, date, name) VALUES (20000,'1875-03-03', 'Die geheimnisvolle Insel');
und würde anschließend der Dialog für die Inhaltsansicht der Tabelle authorpublicationmapping geöffnet, um eine entsprechende Verknüpfung mittels der GUI hinzuzufügen, würde der entsprechende Dialog wie beschrieben vorbefüllt geöffnet:
Dialog zur Definition der Beziehung
Weiterhin ist es möglich, einen View zu öffnen, der die zuletzt eingefügte Zeile einer Tabelle enthält. Über die Scripting-API der sQLshell kann das zum Beispiel mit folgendem Code geschehen:
de.netsysit.db.logic.TableDescription[] tds=sQLshellAPI.getCurrentlyVisibleShell().getSelectedTableDescriptions();
if((tds!=null)&&(tds.length>0))
{
for(int i=0;i<tds.length;++i)
{
query=sQLshellAPI.getCurrentlyVisibleShell().getDBMSInterface().generateSelectCommand(tds[i],sQLshellAPI.getCurrentlyVisibleShell().getConnection());
if(query!=null)
{
de.netsysit.db.logic.FilterExpression fe=new de.netsysit.db.logic.FilterExpression(query.substring(query.toUpperCase().indexOf("WHERE")));
sQLshellAPI.getCurrentlyVisibleShell().openContentView(tds[i],fe);
}
else
java.awt.Toolkit.getDefaultToolkit().beep();
}
}
else
java.awt.Toolkit.getDefaultToolkit().beep();
komplett leer
Generator-Framework in JMeter integriert
27.09.2020
Nachdem ich neulich zwei neue Container für Software-Tests zu meinem Docker-Zoo hinzugefügt habe ist es nun an der Zeit, ein weiteres Hilfsmittel für Software-Tests mit JMeter vorzustellen
WeiterlesenAndroid Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Java. Komponenten Jupyter JupyterBinder Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Präsentationen Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2025 folgt hier gleich die nächste:
WeiterlesenIch habe mich immer wieder darüber geärgert, wenn ich gerade mitten im Entwickeln neuer Features bin und irgendetwas nicht klappt. Dann wollte ich versuchen, herauszufinden, was der Grund dafür sein könnte und natürlich ist das Logging für die eine interessante Klasse gerade deaktiviert. Also: Konfigurationsdatei fürs Logging editieren, speichern, Anwendung neu starten... Damit sollte endlich Schluss ein!
WeiterlesenIch fand neulich dieses vielversprechende Issue zu GitLab und dachte mir, das wäre ein guter Grund, meine lokal gehostete Instanz wieder einmal zu aktualisieren!
WeiterlesenManche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.