Firebird 4 Zugriff über ADO.NET

Alles was nicht direkt zu den obigen Foren passt, findet hier Platz. Also Fragen zu allem was generell firebirdspezifisch ist oder sonst einen Bezug zum Forum hat.

Moderator: martin.koeditz

Antworten
heinrich.kraft
Beiträge: 2
Registriert: Mi 31. Jan 2024, 08:41

Hallo, ich hoffe, ich bin hier richtig?

Ich programmiere mit Visual Studio und greife auf die Firebird-DB unseres ERP-Systems zu!
Schnittstelle ADO.NET (FirebirdSql.Data.FirebirdClient.dll Dateiversion 5.5.0.0 vom 06.10.2016)
Unser ERP-System benutzt im Moment Firebird 2.5, und es gibt beim Zugriff keinerlei Probleme.
Im Moment läuft eine Testphase zur Umstellung auf FB4.0. Und ich musste natürlich testen,
ob der Zugriff auf Firebird 4 weiterhin funktioniert.
Mein Ergebnis mit einem VB.NET-Programm verlief eigentlich positiv! Bis auf die Tatsache, dass
er beim speichern von Umlauten einen Fehler bringt(wegen falscher Zeichen).
d.h. will ich Müller speichern, kommt der Fehler, schreibe ich Mueller, ist alles OK.
Es wird in der Firebird 4-DB der UTF8-Zeichensatz benutzt. Zielframework meines Projektes
ist .NET Framework 4.5.2. Ich habe auch beim Connection-String versucht, den Zeichensatz
anzugeben .. ohne Erfolg!

Um den Fehler einzugrenzen, habe ich den Zugriff mit einem Projekt mit C# + WPS versucht.
Zielframework ist hier NET 5.0.
Hier habe ich mir über NuGet das Paket FirebirdSql.Data.FirebirdClient 10.0.0 geladen, und
für den Zugriff auf FB4 getestet. Und hier hat alles funktioniert!

d.h. die Firebird4-DB kann den Fehler nicht verursachen, sondern es muss der Treiber sein!
Jedoch versuche ich im Moment vergebens, einen aktuelleren Treiber von FirebirdSql.Data.FirebirdClient.dll
zu finden, welcher den FB4-Zugriff mit Zielframework 4.5.2 ohne Fehler ermöglicht.

Vorab vielen Dank für eure Hilfe!
bfuerchau
Beiträge: 490
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Es gibt mittlerweile eine neuere Version (10.0), die mit der bisherigen Version kompatibel ist.
Was die Umlaute angeht, so liegt das an der Zeichenkodierung.
Strings in .Net sind immer in Unicode und müssen in die Ziel-Codepage umgewandelt werden.
Ist die DB nicht in UTF8 erstellt sondern z.B. mit WIN1252 (Westeuropa ANSI), musst du dies auch in der Verbindungsfolge mit angeben.
Schau dir die RDB$DATABASE-Tabelle an, welche Codepage aktuell definiert ist.
Wenn NONE hast du immer schlechte Karten.
heinrich.kraft
Beiträge: 2
Registriert: Mi 31. Jan 2024, 08:41

Ich sah den Wald vor lauter Bäumen nicht! Sorry!
Ich hatte in meinem Tool für den Zugriff auf Firebird eine Abfrage definiert, welches in der Select-Anweisung den
Inhalt eines BLOB-Feldes anzeigte. Diese Datenauflistung wurde zum Programmstart angezeigt!
Als ich dieses Tool dann auf die Firebird4-DB zugreifen lies, dann klappte es zwar, aber schrieb eben die Umlaute
nicht weg! Daher fügte ich im Connection-String den Zusatz "Charset = UTF8" hinzu.
Jetzt hatte ich das Problem, dass er bei Programmstart schon einen Fehler brachte! Und leider vermutete ich,
dass dies an dem Zusatz des Charsets liegt.
Daher habe ich es mal mit c# versucht, und dort funktionierte das speichern von Umlauten auch ohne den Zusatz
des Charsets=UTF8. Ich benutzte hierzu jedoch nur eine kleine Testtabelle! Entweder liegt es an C# oder am
neuen benutzten Treiber 10.0.0.

Jetzt habe ich aus meinem Select-Befehl dieses konvertierte BLOB-Feld einmal entfernt, und der Fehler war weg!
Ich konnte jetzt mit dem Zusatz des charsets auch mit meinem alten Firebird-Treiber umlaute in der FB4-Datenbank
mit VB.NET speichern.

Nochmals sorry, dass das Problem wieder vor dem Monitor gesessen ist! :)

Trotzdem Danke für eure Mühen!
Antworten