[gelöst] ZEOS: "SQL Error: No database selected"

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

[gelöst] ZEOS: "SQL Error: No database selected"

Beitrag von catweasel »

Hallo zusammen

Ich habe auf meinem Synology NAS eine MariaDB installiert und dort eine Datenbank angelegt.
Die DB heißt "Energieverbrauch" und die Tabelle "MeineStrasse15"

Ich versuche nun ein einfaches Programm mit ZEOS-Komponenten zu schreiben, habe hier aber ein Verständnis Problem.


Als erstes habe ich die Komponente "ZConnection" genommen und dort folgende Eigenschaften gesetzt:

Code: Alles auswählen

HostName       : 192.168.1.2
LibraryLocation: zur "libmariadb.dll"
Password       : geheim
Protocol       : Maria-DB5
User           : dbuser
Catalog        : Energieverbrauch


Abschließend die Verbindung hergestellt mit "Connected=true"
Soweit alles ok.

Als nächstes habe ich versucht die Komponente "ZQuery" hinzuzufügen, was leider nicht funktioniert.
Hier habe ich folgende Eigenschaft gesetzt:

Code: Alles auswählen

Connection  :  ZConnection
SQL         :  select * from MeineStrasse15;


Laut dem ZEOS-Tutorial sollte das reichen um mit "Active=true" auf der ZQuery-Komponente
eine Verbindung herzustellen, aber ich bekomme eine Fehlermeldung: "SQL Error: No database selected"

Die Datenbank ("Energieverbrauch") habe ich doch schon im der Komponente ZConnection in der Eigenschaft "Catalog" ausgewählt
und die Tabelle in der SQL-Abfrage im ZQuery?!
Die Eigenschaft "Database" sowohl in der Zconnect als auch in der ZQuery will scheinbar eine lokale Datei da hier der Explorer aufgeht und ich eine datei auswählen soll.
Die Datenbank liegt aber wie oben geschrieben auf einem fernen Server.


Wo könnte mein Fehler liegen?
Michael
Zuletzt geändert von catweasel am Mo 30. Mär 2015, 13:11, insgesamt 1-mal geändert.

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: ZEOS: "SQL Error: No database selected"

Beitrag von hde »

catweasel hat geschrieben:No database selected"

catweasel hat geschrieben:Die Eigenschaft "Database"


dann setz doch einfach die Eigenschaft Database: Ignorier den Explorer

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: ZEOS: "SQL Error: No database selected"

Beitrag von catweasel »

hde hat geschrieben:dann setz doch einfach die Eigenschaft Database: Ignorier den Explorer


Es funktioniert einfach nicht :x
Ich habe jetzt noch einmal angefangen und nur die Komponenten auf die Form gelegt ohne irgendwelche Änderungen an den Eigenschaften im Objectinspector zu machen,
die mache ich jetzt per Programm.
Leider hängt sich das Programm an der Stelle wo ich den ZQuery1.Active auf "true" setze auf (keine Fehlermeldung)

Code: Alles auswählen

    //ZConnection
    ZConnection1.HostName        := '192.168.1.2';
    ZConnection1.LibraryLocation := 'Y:\Programmieren\Lazarus\MariaDB\libmariadb.dll';
    ZConnection1.Password        := 'geheim';
    ZConnection1.User            := 'dbuser';
    ZConnection1.Port            := 3306;
    ZConnection1.Protocol        := 'MariaDB-5';
    //ZConnection1.Catalog         := 'Energieverbrauch';
    ZConnection1.Database        := 'Energieverbrauch';
    ZConnection1.Connected       := true;
 
    //ZQuery
    ZQuery1.Connection           := ZConnection1;
    ZQuery1.DataSource           := DataSource1;
    ZQuery1.SQL.Text             := 'select * from MeineStrasse15';
 
    //ZQuery1.Active:=true;        // << Fehler: Programm hängt wenn Zeile drin
 
    //DataSource
    DataSource1.DataSet          := ZQuery1;
 
    //DBGrid
    DBGrid1.DataSource           := DataSource1;

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: ZEOS: "SQL Error: No database selected"

Beitrag von MmVisual »

Versuche mal damit die DLL zu laden:

Code: Alles auswählen

function LoadLibTest(s: String): Boolean;
Var h: THandle;
Begin
    h := dynlibs.LoadLibrary(PAnsiChar(s));
  If (h <> 0)
    {$ifndef UNIX}
    And (h <> THANDLE(-1)) //INVALID_HANDLE_VALUE)
    {$endif}
    Then
  Begin
    dynlibs.FreeLibrary(h);
    Result := True;
  end Else Result := False;
end;

Wenn es nicht geht, dann ist die EXE 64 Bit und die DLL 32 Bit oder umgekehrt.
EleLa - Elektronik Lagerverwaltung - www.elela.de

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: ZEOS: "SQL Error: No database selected"

Beitrag von catweasel »

MmVisual hat geschrieben:Versuche mal damit die DLL zu laden:

Code: Alles auswählen

function LoadLibTest(s: String): Boolean;
Var h: THandle;
Begin
    h := dynlibs.LoadLibrary(PAnsiChar(s));
  If (h <> 0)
    {$ifndef UNIX}
    And (h <> THANDLE(-1)) //INVALID_HANDLE_VALUE)
    {$endif}
    Then
  Begin
    dynlibs.FreeLibrary(h);
    Result := True;
  end Else Result := False;
end;

Wenn es nicht geht, dann ist die EXE 64 Bit und die DLL 32 Bit oder umgekehrt.


Ich habe testweise versucht die DLL über Deine Funktion zu laden und bekomme als Ergebnis ein "true" zurück, d.h.die DLL kann geladen werden.
Die Ursache für meine Probleme müßten danach woanders liegen, oder sehe ich das falsch?

Gruß
Michael

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: ZEOS: "SQL Error: No database selected"

Beitrag von hde »

catweasel hat geschrieben: //ZQuery
ZQuery1.Connection := ZConnection1;
ZQuery1.DataSource := DataSource1; // da ist der Fehler -
ZQuery1.SQL.Text := 'select * from MeineStrasse15';

//ZQuery1.Active:=true; // << Fehler: Programm hängt wenn Zeile drin

//DataSource
DataSource1.DataSet := ZQuery1;

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: ZEOS: "SQL Error: No database selected"

Beitrag von hde »

Zur Erklärung:
du verlinkst - ZDatasource1 mit ZQuery1
und dann - ZQuery1 wieder mit ZDatasource1
das ergibt so etwas ähnliches wie eine Endlosschleife

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: ZEOS: "SQL Error: No database selected"

Beitrag von catweasel »

hde hat geschrieben:Zur Erklärung:
du verlinkst - ZDatasource1 mit ZQuery1
und dann - ZQuery1 wieder mit ZDatasource1
das ergibt so etwas ähnliches wie eine Endlosschleife


Autsch, das hatte ich nicht gesehen
Danke für die Hilfe, es funktioniert jetzt :D


Falls noch jemand anderes das Problem hat, so sieht der Code jetzt aus (sollte man natürlich noch Idiotensicher machen z.B. mit try execpt usw.)
4 Konponenten: ZConnection, ZQuery, DataSource und DBGrid
Eine MariaDB: Datenbank: "Energieverbrauch" mit einer einzelnen Tabelle "Meinestrasse15"

Code: Alles auswählen

  //ZConnection
  ZConnection1.HostName        := '192.168.1.2';
  ZConnection1.LibraryLocation := 'Y:\Programmieren\Lazarus\MariaDB\libmariadb.dll';
  ZConnection1.Password        := 'geheim';
  ZConnection1.User            := 'dbuser';
  ZConnection1.Port            := 3306;
  ZConnection1.Protocol        := 'MariaDB-5';
  ZConnection1.Database        := 'Energieverbrauch';
  ZConnection1.Connected       := true;
 
  //ZQuery
   ZQuery1.Connection           := ZConnection1;
  ZQuery1.SQL.Text             := 'select * from Meinestrasse15';
  ZQuery1.Active               := true;
 
  //DataSource
  DataSource1.DataSet          := ZQuery1;
 
  //DBGrid
  DBGrid1.DataSource           := DataSource1;

Antworten