ISQL - einen ersten Datensatz eingeben

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

Hallo in die Runde.

Ich setze einmal eine minimalisierte ISQL-Sitzung hier rein.
Ich hoffe, dass das so in Ordnung geht.
+++++++++++++++++++++++++++++++++++++++++++++++++++++

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\name>chcp 65001
Aktive Codepage: 65001.
C:\Users\name>isql -z
ISQL Version: WI-V3.0.4.33054 Firebird 3.0
Use CONNECT or CREATE DATABASE to specify a database

CREATE DATABASE 'c:\users\name\documents\firebird\verein.fdb'
USER 'sysdba' PASSWORD 'pa$$word'
PAGE_SIZE 8192
DEFAULT CHARACTER SET UTF8;

CREATE TABLE mitglieder (
id INTEGER NOT NULL,
name VARCHAR(30) NOT NULL
);
ALTER TABLE mitglieder ADD PRIMARY KEY (id);

Die DB-Tabelle Kommunikation:

CREATE TABLE kommunikation (
id INTEGER NOT NULL,
mitgld_id INTEGER NOT NULL,
telefon VARCHAR(15)
);
ALTER TABLE kommunikation ADD PRIMARY KEY (id);
ALTER TABLE kommunikation ADD CONSTRAINT FK_komm FOREIGN KEY (mitgld_id)
REFERENCES mitglieder(id) ON DELETE CASCADE ON UPDATE CASCADE;

SQL> insert into mitglieder (id, name)
CON> values ('1', 'Blümchen');
Expected end of statement, encountered EOF
...und hier fliege ich regelmäßig raus und lande am Prompt:
C:\Users\name>

Da ich ISQL statt FlameRobin favorisiere, werde ich wohl nicht umhin kommen über FlameRobin den ersten Datensatz in Mitglieder anzulegen.
Sobald der 1. Datensatz in Mitglieder angelegt ist, funktioniert die Folge-Datensatzerfassung mt ISQL.

Nur warum es nicht mit ISQL geht (ich also 'rausfliege') verstehe ich nicht. :?

Das schleppe ich schon ein paar Tage mit mir herum. Könnte mir das bitte jemand erklären.

Danke Gerd.
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

a) ich glaube im ISQL braucht man kein Semikolon
b) deine ID ist numerisch und gehört daher nicht in Hochkomma
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

bfuerchau hat geschrieben: Mi 2. Okt 2019, 09:23 a) ich glaube im ISQL braucht man kein Semikolon
b) deine ID ist numerisch und gehört daher nicht in Hochkomma
Hallo bfuerchau.

Vielen Dank für den Hinweis und Deine Bemühungen.
Habe ich natürlich sofort gecheckt.

Ich habe nun mit dem mitgelieferten "Firebird ISQL Tool" (und nicht wie sonst der Windows-Eingabeaufforderung) die von mir oben eingestellte Sitzung noch einmal nachvollzogen. Und außerdem wurde mit ihm eine neue Sitzung 'Create Datenbank Verein1.fdb' durchgeführt.

Vom "Firebird ISQL Tool" erhalte ich wenigstens eine weiterführende Meldung, und werde nicht kommentarlos rausgeworfen, wie es bei Verwendung der Windows-Eingabeaufforderung der Fall zu sein scheint. Hier die Meldung:
"Statement failed, SQLSTATE = 22000
Malformed string"


22000 wäre dann der Klassentext: 'Data exception'.
Aber eine falsche Zeichenkette, kann ich hier nicht erkennen.
Weder mit values ('1', 'Blümchen') noch mit values (1, 'Blümchen').

Irgendwo habe ich gelesen, dass man in Firebird mit ISQL fast alles machen kann. Fast!
Nun mein Ansinnen einen ersten einfachen Datensatz - nach erfolgreicher Datenbank- und Tabellenanlage anzulegen - scheint dann wohl so eine Ausnahme zu sein. (Das ist lieb gemeint. Firebird ist dennoch sehr schön gemacht!)

Ich werde das zum Anlass nehmen und endlich Firebird 4.x Beta installieren und schauen, ob es da funktioniert.


Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

Gerd hat geschrieben: Mi 2. Okt 2019, 16:38
Ich werde das zum Anlass nehmen und endlich Firebird 4.x Beta installieren und schauen, ob es da funktioniert.

Gerd

Hallo.

Habe das nun unter Verwendung von Firebird 4.0 Beta 1 jetzt gleich noch einmal geprüft (sonst kann ich heute Nacht nicht gut schlafen ... :roll: ).

Sowohl bei zwei DB-Tabellen mit Fremdschlüssel-Konstrukt als auch bei nur einer sehr einfachen DB-Tabelle gelingt es nicht mittels ISQL einen ersten Datensatz anzulegen.
Egal, ob values '1' oder 1.

Das ist ein Fehler - auch im "Firebird ISQL Tool" der Firebird-Version 4.0 Beta1.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ISQL-Sitzung mit neu in Firebird 4.0 Beta 1 erstellter Datenbank Verein.fdb und einem Fremdschlüssel-Konstrukt:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\Name>chcp 65001
Aktive Codepage: 65001.

C:\Users\Name>isql -z
ISQL Version: WI-T4.0.0.1436 Firebird 4.0 Beta 1
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE 'c:\users\Name\documents\firebird\verein.fdb'
CON> USER 'sysdba' PASSWORD 'pa$$word'
CON> PAGE_SIZE 8192
CON> DEFAULT CHARACTER SET UTF8;
Server version:
WI-T4.0.0.1436 Firebird 4.0 Beta 1
SQL> CREATE TABLE mitglieder (
CON> id INTEGER NOT NULL,
CON> name VARCHAR(30) NOT NULL
CON> );
SQL> ALTER TABLE mitglieder ADD PRIMARY KEY (id);
SQL> CREATE TABLE kommunikation (
CON> id INTEGER NOT NULL,
CON> mitgld_id INTEGER NOT NULL,
CON> telefon VARCHAR(15)
CON> );
SQL> ALTER TABLE kommunikation ADD PRIMARY KEY (id);
SQL> ALTER TABLE kommunikation ADD CONSTRAINT FK_komm FOREIGN KEY (mitgld_id)
CON> REFERENCES mitglieder(id) ON DELETE CASCADE ON UPDATE CASCADE;
SQL> insert into mitglieder (id, name)
CON> values (1, 'Blümchen');
Expected end of statement, encountered EOF
C:\Users\Name>


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ISQL-Sitzung mit neu in Firebird 4.0 Beta 1 erstellter Datenbank Verein1.fdb mit einer sehr einfachen DB-Tabelle mitglieder:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\Name>chcp 65001
Aktive Codepage: 65001.

C:\Users\Name>isql -z
ISQL Version: WI-T4.0.0.1436 Firebird 4.0 Beta 1
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE 'c:\users\Name\documents\firebird\verein1.fdb'
CON> USER 'sysdba' PASSWORD 'pa$$word'
CON> PAGE_SIZE 8192
CON> DEFAULT CHARACTER SET UTF8;
Server version:
WI-T4.0.0.1436 Firebird 4.0 Beta 1
SQL> CREATE TABLE mitglieder (
CON> id INTEGER NOT NULL,
CON> name VARCHAR(30) NOT NULL
CON> );
SQL> ALTER TABLE mitglieder ADD PRIMARY KEY (id);
SQL> insert into mitglieder (id, name)
CON> values (1, 'Blümchen');
Expected end of statement, encountered EOF
C:\Users\Name>

:?

Viele Grüße
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Hi Gerd,

bin gerade unterwegs, kann das Verhalten deshalb nicht überprüfen. Aber prüfe bitte auch mal, ob es an der Zeichenkette Blümchen liegt. Nimm mal das Umlaut raus.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

martin.koeditz hat geschrieben: Mi 2. Okt 2019, 21:34 ... Aber prüfe bitte auch mal, ob es an der Zeichenkette Blümchen liegt. Nimm mal das Umlaut raus. ...
Hallo Martin.

Ja, da ist was dran. Danke Du hast mir die Nach gerettet. :)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\Name>chcp 65001
Aktive Codepage: 65001.

C:\Users\Name>isql -z
ISQL Version: WI-T4.0.0.1436 Firebird 4.0 Beta 1
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect 'c:\users\name\documents\firebird\verein.fdb' user 'sysdba' password 'pa$$word';
Server version:
WI-T4.0.0.1436 Firebird 4.0 Beta 1
Database: 'c:\users\name\documents\firebird\verein.fdb', User: SYSDBA
SQL> CREATE TABLE mitglieder (
CON> id INTEGER NOT NULL,
CON> name VARCHAR(30) NOT NULL
CON> );
SQL> insert into mitglieder (id, name)
CON> values (1, 'Blume');
SQL> SET LIST ON;
SQL> SELECT * FROM mitglieder;

ID 1
NAME Blume


SQL>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Hm... verstehe ich nicht.
Habe der Datenbank beim Erstellen den Zeichensatz UTF-8 zugewiesen.
Habe die Codepage 65001 aktiviert. Und dennoch Probleme mit deutschen Umlauten. (?)

Vielen Dank
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

ISQL ist eine DOSe-Anwendung mit einer ggf. falschen Codepage.
Probiers einfach mal aus:
https://www.google.com/search?client=fi ... x+codepage
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

Hallo bfuerchau.

Danke für den Hinweis. :)
Das und anderes habe ich schon gemacht.
Siehe seit erst seit kurzem auch hier: viewtopic.php?f=4&t=71


Viele Grüße
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Ich habe versucht, es dir in dem anderen Beitrag zu erklären.
Wenn du in der connection UTF8 angibst so musst du im SQL in den Konstanten auch UTF8 eingeben. Da du aber ANSI eingibts ist dies malformed.
Gib in der Connection WIN1252 an, dann klappt das auch, denn iSQL dient ja nur dem Test und ist wohl selber nicht unicodefähig (DOS-kompatibel).
Andere Tools arbeiten ja als Windowsanwendung in Unicode (UCS2).
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

bfuerchau hat geschrieben: Fr 4. Okt 2019, 10:53 Ich habe versucht, es dir in dem anderen Beitrag zu erklären.
Vielen Dank für diese Bemühungen!
bfuerchau hat geschrieben: Fr 4. Okt 2019, 10:53 Wenn du in der connection UTF8 angibst
Wo bzw. an welcher Stelle gebe ich denn das deiner Meinung nach an? (Meinst Du die Codepages z.B. 65001 vor dem Einstieg in die ISQL-Session?)
bfuerchau hat geschrieben: Fr 4. Okt 2019, 10:53 so musst du im SQL in den Konstanten auch UTF8 eingeben.
Wo sind den Konstanten in den obigen ISQL-Sitzungen?
Und wie sollte dann UTF8 eingegeben werden?
bfuerchau hat geschrieben: Fr 4. Okt 2019, 10:53 Da du aber ANSI eingibts ...
Ich bilde mir ein, dass ich bei einer aktivierten Codepage 65001 eben kein ANSI eingebe.
bfuerchau hat geschrieben: Fr 4. Okt 2019, 10:53 denn iSQL dient ja nur dem Test
Ich verstehe ISQL als ultimatives Tool, mit dem Firebird-Datenbanken adminstriert werden können.
(Ich adminstriere bspw. MariaDB nur von der Console - ich bräuchte gar keinen grafischen Clienten.)

Ich möchte das noch einmal klar gesagt haben:
Wenn ich mit ISQL eine Datenbank create - ohne Zuweisung eines Zeichensatz z. B. UTF8 - die Einstellung dieser Datenbank beim Zeichensatz also NONE ist - so habe ich keine 'Umlautprobleme' beim Zugriff mittels dem ISQL Tool.
Ich habe übrigens nach recht intensiver Suche im Internet und diversen Dokus kein Datenbank-Create gefunden, bei dem der Datenbank ein anderer Zeichensatz mitgegeben wurde. Das Folgende habe ich also nicht gefunden:

SQL>CREATE DATABASE 'c:\users\name\documents\firebird\verein.fdb'
CON>USER 'sysdba' PASSWORD 'pa$$word'
CON>PAGE_SIZE 8192
CON>DEFAULT CHARACTER SET UTF8;

Was macht das für einen Sinn, wenn ich so ein Konstrukt mit dem ISQL Tool erfolgreich erstellen kann aber, wenn es dann in der Folge um das Schreiben und Lesen von z.B. Umlauten (ü) geht, es offenbar Darstellungsprobleme gibt. :?

Viele Grüße
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Antworten