gb.db2.sqlite3

Spezielle Fragen zu PostgreSQL, MySQL, SQLite, SQL ...
Crabman
Foriker
Beiträge: 226
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Crabman » Sa 1. Mär 2025, 09:45

Hallo
Die Antwort aus dem Bugtracker sagt mir, dass es vermutlich auch dort ein Missverständnis gab.
Eine Datenbank, die sich im Projektpfad befindet, hat zur Laufzeit des Programms in der Tat keine Schreibrechte, denn wenn man eine ausführbare Gambas-Programmdatei daraus macht, wäre die Datenbank Bestandteil der ausführbaren Datei und die darf natürlich nicht verändert werden. Aber vielleicht war das auch gar nicht Deine Absicht.

Man kann eine Datenbank im Projektpfad durchaus "mitliefern", aber wenn sie veränderbar sein soll, dann muss man sie irgendwo hin kopieren, wo man Schreibrechte hat und sie dort weiter verwenden.

Datenbanken, die man in einem Projektpfad als "Basisdatensatz mitliefert", sind aber während der Entwicklungszeit durchaus veränderbar und diese Veränderungen kann man sehr bequem in der IDE vornehmen. Um das zu nutzen musst Du zunächst unter dem Projektverzeichnis "Verbindungen" eine Verbindung finden, die die IDE automatisch angelegt hat. Wenn Du diese mit der rechten Maustaste markierst, wirst Du im Kontextmenü "Eigenschaften" finden. Dort kann man die statischen Daten der Verbindung der IDE zur Datenbank einstellen. Diese können auch ins Projektverzeichnis zeigen. Diese Daten waren in Deinem Programm noch nicht eingestellt. Wenn Du das getan hast, kannst Du die Verbinding der IDE mit der Datenbank aufbauen, indem Du ein Doppelklick auf die Verbindung im Projektpfad machst. Es öffnet sich dann ein Datenbank-Browser innerhalb der IDE mit dem Du die Datenbank-Tabellen anschauen und ändern kannst.

Da es in Deinem Beispielprogramm keine Verbindung gab, weiß ich auch nicht welche Verbindungseinstellung Du genau gemeint hast. Es kann also durchaus sein, dass ich Deinen Punkt noch nicht getroffen habe.

Viele Grüße
Crabman

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Sa 1. Mär 2025, 20:26

Hallo Crabman,

vielen Dank, dass Du mir das mit den Schreibrechten und mit der Antwort auf den Bugreport erklärt hast.
Jetzt habe ich das wirklich komplett verstanden.

Ja, ich glaube ich habe das ganze so kompliziert erklärt, dass mich keiner verstanden hat.
Vielleicht ist das für Euch alles zu trivial, deshalb versuche ich es hier noch einmal ausführlich.

Ich habe in meinen Beispiel einfach eine Testdatenbank test.sqlite vorher schon erstellt und in den Projekt Ordner gepackt.

Jetzt habe ich diese Datenbank in der IDE so wie Du es beschrieben hast ausgewählt.
Crabman hat geschrieben:
Sa 1. Mär 2025, 09:45
Hallo

"Wenn Du diese mit der rechten Maustaste markierst, wirst Du im Kontextmenü "Eigenschaften" finden. Dort kann man die statischen Daten der Verbindung der IDE zur Datenbank einstellen."
Ich habe den Namen hcon gewählt, Type SQLite und den Pfad zu dieser Datei über den FileChooser ausgewählt.

In meinen Fall: /home/user/Gambas/Datenbank_mit_IDE

und dann im Feld Datenbank diese Datenbank ausgewählt.

wenn ich jetzt mit OK bestätigen, wird die Datenbank eben nicht gefunden.

Und ich habe jetzt den Grund gefunden.

Wenn ich in den Eigenschaft der Verbindung, wie oben beschrieben, den Pfad zu der Datei auf genau diese Weise angeben, dann muss ich noch einen Verweis auf das Verzeichnis selber hinzufügen. Also einen .

Ich muss also

statt

Code: Alles auswählen

/home/user/Gambas/Datenbank_mit_IDE
das hier dort stehen haben:

Code: Alles auswählen

/home/user/Gambas/Datenbank_mit_IDE/.
das wird nicht automatisch gemacht, sondern ich muss manuell hinzufügen.

Die ausgewählt Datenbank bleibt natürlich die gleiche.

Wenn ich jetzt auf OK klicke wird die Datenbank gefunden.


Also das hat nichts mit der neuen Komponente zu tun, dass ist wohl der ganz normale Weg und ist Dir und den anderen vielleicht klar gewesen. Mich hat es aber wirklich total verwirrt und ich habe das gestern eher durch Zufall erkannt, als ich mir die Sache noch einmal angesehen habe.

Ich könnte mit aber vorstellen, dass dies auch für andere nicht unbedingt eindeutig ist. Aber wahrscheinlich wird ohnehin jeder eher mit den Code arbeiten, so wie Du es gemacht hast, und nicht nur mit der IDE.

Auch bei Deiner Version hast Du diesen /. nicht bei der Pfadangabe stehen, aber durch das

Code: Alles auswählen

.Host = Application.path 
wird der Pfad erkannt.

Hast Du jetzt mein Problem verstanden oder ist es immer noch unverständlich von mir beschrieben?
Auf jeden Fall vielen Dank für Deine Geduld, trotzt närrischer Tage habe ich eigentlich nicht versucht wie ein Narr rüberzukommen. :wink:

beste Grüße Poly
Ceterum censeo Goo..... esse delendam

Crabman
Foriker
Beiträge: 226
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Crabman » So 2. Mär 2025, 09:42

In Anbetracht Deiner Beschreibung willst Du anscheinend die Connection im Projektverzeichnis für die Verbindung zur Datenbank im Programm nutzen. Dass das geht wäre mir neu und in Deinem Beispielprogramm wird hcon auch ein "Unbekannter Bezeichner" abgelehnt.
Die Verwendung von /. am Ende eines Pfades ist zudem ungewöhnlich und ich wüsste auch nicht, warum das erforderlich sein sollte.

Das Ganze ließe sich wohl nur klären, wenn Du das Beispielprogramm noch einmal in der funktionierenden Form anbietest. Vielleicht gibt es ja noch unbekannte Praktiken zu entdecken. Wenn Du allerdings nur die Datenbank-Browser-Funktion der IDE verwenden wolltest, dann wäre die Sache aus meiner Sicht geklärt.

Viele Grüße
Crabman

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » So 2. Mär 2025, 19:23

Crabman hat geschrieben:
So 2. Mär 2025, 09:42
in Deinem Beispielprogramm wird hcon auch ein "Unbekannter Bezeichner" abgelehnt.
Also in meinen Beispielprogramm oben wird bei mir kein falscher Bezeichner genannt, sondern bei der Ausführung mit F5 erscheint der Fehler

Database does not exist

und dann werden darunter die lokalen Variablen angezeigt, wobei
sHost auf mein Home-Verzeichnis verweist, aber nicht auf den Ort wo die Datenbank abgelegt ist.


Das Programm was ich unten angefügt habe ist exakt gleich, außer das
den Text here you must put in the complete path to the application gelöscht habe und ein /. am Ende des ausgewählten Pfades hinzugefügt habe.

Wenn ich jetzt mit F5 starte wird der Databrowser exakt angezeigt.

Durch das anfügen von /. verweist der Pfad ja auf sich selber, und somit exakt auf den Ort wo sich die Datenbank befindet.

Na ja, vielleicht funktioniert das ja auch nur bei mir ;)
Bei mir ist es auf jeden Fall so, dass wenn ich den Pfad ganz normal auswähle darin dann zwar die Datenbank in den Verbindungseigenschaften gefunden wird, so das ich sie auswählen kann, aber eben nicht beim Start des Programms.
Nur durch das Anfügen von /. am Ende des Pfades wird die Datenbank beim Start mit F5 gefunden.

Wäre echt nett, wenn Du das mal überprüfen könntest.

beste Grüße
Poly
Dateianhänge
Datenbank_mit_IDE Kopie.tar.gz
(8.73 KiB) 21-mal heruntergeladen
Ceterum censeo Goo..... esse delendam

Crabman
Foriker
Beiträge: 226
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Crabman » Di 4. Mär 2025, 21:45

Danke! Interessant!
Jetzt habe ich verstanden. Das Konzept der Nutzung einer Connection der IDE war mit nicht geläufig - vermutlich weil es mit normalen Pfadangaben nicht funktioniert. Warum die Endung "/." hierfür erforderlich ist (sowohl für die alten als auch die neuen Datenbank-Komponenten) kann ich sagen. Ich werde mal in der Szene nachhaken, was darüber bekannt ist.
Wie erklärst Du Dir das "/.", bzw woher hast Du das?
Viele Grüße
Crabman

Benutzeravatar
tionov
Site Admin
Beiträge: 560
Registriert: So 18. Mai 2014, 23:40
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von tionov » Di 4. Mär 2025, 22:50

Hi Crabman,vielleicht könntest du ja den Bug wiedereröffnen, ich habe leider nicht die Zeit, mich damit tiefer zu beschäftigen.
Alles Gute,

tionov

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Mi 5. Mär 2025, 09:28

Vielen Dank, dass Ihr Euch das mal angesehen habt.
Crabman hat geschrieben:
Di 4. Mär 2025, 21:45

Wie erklärst Du Dir das "/.", bzw woher hast Du das?
Als, wie ich oben bereits gesagt habe, wollte ich eigentlich nur das Programm DatabaseEditorDesignTimeConnection 1.0.0 nachvollziehen und habe selber mein eigenes kleines Programm gemacht, welches ich oben verlinkt habe.
Mir viel auf, dass ich andere Komponenten verwende und dachte, dass da der Fehler liegen würde.
Jetzt habe ich dann aber einfach versucht in das Programm DatabaseEditorDesignTimeConnection 1.0.0 meine Datenbank einzufügen und diese auszuwählen. Es klappte nicht.
Erst vorgestern ist mir dann aufgefallen, dass im Original am Ende des Pfades noch ein Punkt angefügt ist, der aber nach jeder Auswahl eines neuen Pfades fehlt.
Und siehe da, mit diesem . klappt es auch in meinem Programm.
Es war also den Ersteller des Programms wohl schon bekannt.

Ob es Bug ist oder das normale Verhalten, dass weiß ich nicht.
Vielleicht ist es ja so, dass ohne den Punkt, also den Verweis auf das aktuelle Verzeichnis, nur in bestimmten Verzeichnissen gesucht wird. In diesem Falle also im home Verzeichnis des users?

Bin mal gespannt ob und was Du herausbekommst.

Vielen Dank und beste Grüße
Poly
Ceterum censeo Goo..... esse delendam

Crabman
Foriker
Beiträge: 226
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Crabman » Mi 5. Mär 2025, 11:12

Hi Poly und Tionov
Ich habe den Bug-Report wieder aktiviert und auf den aktuellen Stand gebracht.
http://gambaswiki.org/bugtracker/edit?o ... om=L21haW4

Eine Datenbank im Projektverzeichnis zu verwenden ist zwar immer dann ein Fehler, wenn man Schreibrechte benötigt, aber vielleicht lässt sich ja die Notwendigkeit für das "/." am Ende des Pfades klären, das nicht erforderlich ist, wenn die Datenbank außerhalb des Projektverzeichnisses gespeichert ist.

Viele Grüße
Crabman

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Mi 5. Mär 2025, 23:22

Ganz lieben Dank für den Bug-Report und Deine Hilfe, Crabman :)
Ceterum censeo Goo..... esse delendam

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Sa 15. Mär 2025, 22:46

Hallo zusammen,

an dieser Stelle noch einmal vielen Dank für den Bug-Report und das schöne Video, das angehängt wurde. :)

Ich habe heute noch einmal ein wenig mit meiner Datei gespielt und erkläre mir das Verhalten jetzt so.
Durch den Punkt wird die Datei zu einer relativen Pfadangabe.
Eine Datenbank-Datei, welche mit einer relativen Pfadangabe angeben wird, ist read only.
Ohne diesen Punkt würde es sich also um eine komplette Pfadangabe handeln und vielleicht ist es Absicht, dass dies unterbunden wird.
Eine beschreibbare Datenbank sollte sich wohl nicht im aktuellen Arbeitsverzeichnis befinden.

Wie auch immer. Hatte ich zunächst einfach nur versucht das Beispiel von dem Programm DatabaseEditorDesignTimeConnection 1.0.0
nachzuvollziehen. So habe ich mittlerweile doch tatsächlich einen kleinen Nutzen darin erkannt, mal eben ganz schnell eine Datenbank zu bauen, diese mit dem Datenbrowser nach den jeweiligen Spalten zu sortieren und weitere Daten darin einzugeben.

Das geht aber nicht, mit der relativen Pfadangabe, also durch das Anfügen von "/."

Ich habe hier mal eine kleine Routine zu der Datenbank hinzugepackt, welche die Verbindung einfach in den Unterordner
.connection schreibt.
Ich würde mich freuen, wenn das mal jemand ausprobieren könnte, ob das nur bei mit oder generell funktioniert.

Ganz davon ab, ist mir dabei etwas aufgefallen.

Es geht um die statische Klasse Connections.

In der Wiki finde ich dazu

"Diese Klasse listet alle Connection auf, die in der IDE unter dem Projektordner „.connection“ definiert sind."

https://gambaswiki.org/wiki/comp/gb.db/connections

Aber irgendwie gibt es da keine Methode oder so, welche den Namen der Verbindungen wiedergibt.
Also z.B. : hcon oder Connection1

Eine einfache Abhilfe ist es sich einfach alle Dateien des Ordners .connection in einer for each Schleife ausgeben zu lassen
und dabei jeweils alles hinter den . der Pfadangabe abzutrennen.
Woran erkenne ich dann aber die aktuell in der IDE eingebundene Verbindung?

Gibt es da vielleicht noch eine andere Möglichkeit?

Ist die Frage hier gut aufgehoben oder gehört das in einen extra Beitrag?

Ich bedanke mich schon mal im Voraus für Eure Hilfe und kostbare Zeit. :)

beste Grüße Poly
Dateianhänge
Datenbank_IDE_25.tar.gz
(12.73 KiB) 5-mal heruntergeladen
Ceterum censeo Goo..... esse delendam

Crabman
Foriker
Beiträge: 226
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Crabman » So 16. Mär 2025, 19:08

Hi
Warum ein "/." am Ende eines absoluten Pfades einen relativen Pfad anzeigen soll, erschließt sich mir nicht.
Auch in sqlite selbst konnte ich keine Hinweise finden, was ein "/." am Ende eines absoluten Pfades bedeuten könnte. Da warte ich doch lieber auf eine offizielle Reaktion.

Die statische Klasse Connections kann ganz einfach so verwendet werden:

Code: Alles auswählen

Dim hConnection As Connection

For Each hConnection In Connections
  Print hConnection.Name
Next
Siehe auch https://gambas-buch.de/dwen/doku.php?id ... onnections

Bei weiteren abweichenden Fragen empfehle ich einen separaten Thread auf zu machen.

Viele Grüße
Crabman

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » So 16. Mär 2025, 20:27

Vielen Dank Crabman für die schnelle Antwort.

Dein Beispiel zeigt nur die Verbindungen zu den Datenbanken an.
Es werden also die Namen der Datenbank angezeigt. Bei mir also test.sqlite
Damit meine Routine oben richtig funktioniert brauche ich aber die Verbindungs-Namen welche in der IDE erstellt werden.
Also Connection1 in meinem Fall oder hcon in meinem ersten Beispiel.
In dem Ordner .connection können sich also mehrere Verbindungen befinden, die aktuelle Verbindung kann ich so nicht herausbekommen.

Ich werde noch ein wenig in der Wiki lesen und sonst gegebenenfalls einen neuen Thread eröffnen.
Vielen Dank.

beste Grüße
Poly
Ceterum censeo Goo..... esse delendam

Crabman
Foriker
Beiträge: 226
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Crabman » So 16. Mär 2025, 22:42

Moin
Ich sehe aktuell keinen Weg Deine Anforderungen mit den bestehenden Klassen umzusetzen. Mir ist auch nicht klar, warum die Eigenschaft Name in den Klassen DB und Connection mit dem Namen der Datenbank anstatt der Verbindungsbezeichnung verknüpft ist. Das wäre vielleicht ein Fall für die MailingList.
Viele Grüße
Crabman

Poly
Foriker
Beiträge: 82
Registriert: Fr 17. Apr 2020, 12:46
Kontaktdaten:

Re: gb.db2.sqlite3

Beitrag von Poly » Do 20. Mär 2025, 15:24

Hi Crabman,

ich habe mich jetzt auch für den Bug Tracker registriert.
Ich möchte mich noch mal ganz herzlich bedanken, dass Du das mit den Bug übernommen hast und sofort ein offenes Ohr für mich hattest.
Bin etwas irritiert, wie der das Problem dort aufgenommen wurde. Danke auch für Deine Kommentare dort.
Aus den Antworten bin ich gar nicht schlau geworden, aber mein Verständnis für die Sache ist da zu gering um mich da einzuschalten.
Ich werde einfach noch ein wenig Zeit zur Einarbeitung brauchen. Einmal für die Thematik, aber auch für den Tonfall bzw. "Humor" der dort herrscht :wink:

beste Grüße
Poly
Ceterum censeo Goo..... esse delendam

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste