AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TSQLConnection / Oracle / NSL_CHARACTERSET ändern
Thema durchsuchen
Ansicht
Themen-Optionen

TSQLConnection / Oracle / NSL_CHARACTERSET ändern

Ein Thema von tofse · begonnen am 6. Dez 2012 · letzter Beitrag vom 8. Dez 2012
Antwort Antwort
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#1

TSQLConnection / Oracle / NSL_CHARACTERSET ändern

  Alt 6. Dez 2012, 12:29
Datenbank: Oracle • Version: 10.2 • Zugriff über: TSQLConnection
Hallo,
ich greife auf die Oracle Datenbank einer anderen Software zu. Dort sind Passwörter "verschlüsselt" hinterlegt.
Das wird gemacht, um den Benutzerstamm dieser Software als Basis für Eigenentwicklungen zu verwenden.
Der Algorithmus zum Verschlüsseln ist bekannt.

Nun das Problem: Wenn ich das Passwort per SQL auslese, kommt der verschlüsselt String zurück, funktioniert prima, außer das unverschlüsselte Zeichen ist ein Sonderzeichen.
In der Datenbank steht z.B. ÝÒåçÙç, SQL liefert aber ÝÒåçÙç (an der letzten Stelle steht hier im Beispiel ein !)
Zunächst dachte ich, der Algorithmus hat einen Fehler, der sich bei den Sonderzeichen zeigt.
Das konnte ich aber widerlegen, denn es wird auch mit einem PHP Skript auf die Datenbank zugegriffen. Zunächst hatte ich das gleiche Phänomen, aber man kann in der Connection
Code:
oci_connect('user','pw','......','WE8MSWIN1252')
character_set angeben. Mit der richtigen Angabe für diese Datenbank hat es dann auch funktioniert. Also muss es daran liegen.

So, nun zur eigentlichen Frage
Wie kann ich NLS_CHARACTERSET in Delphi (TSQLConnection) setzen???? Ich denke, damit wird es dann funktionieren.

Grüße
Christof
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: TSQLConnection / Oracle / NSL_CHARACTERSET ändern

  Alt 6. Dez 2012, 12:35
Vielleicht hilft Dir dies weiter?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#3

AW: TSQLConnection / Oracle / NSL_CHARACTERSET ändern

  Alt 6. Dez 2012, 12:38
Leider nicht, da wird ja nicht gezeigt, wie es unter Delphi anzugeben ist.
Ich denke...hoffe...dass man es einfach in der Connection (ähnlich wie bei PHP) einfach mit angeben kann.

Ich hatte es schon mit ALTER SESSION versucht, aber da kam irgendwas mit nicht zulässig...
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: TSQLConnection / Oracle / NSL_CHARACTERSET ändern

  Alt 6. Dez 2012, 14:28
AFAIK funktioniert mit Oracle nicht so ohne weiteres.

Bei Oracle und FireBird muß man den Client-Characterset vor dem Connect wissen, da du erst alle Envirnonment-Variablen hinterlegen mußt.

function OCIEnvNlsCreate(var envhpp: POCIEnv; mode: ub4; ctxp: Pointer;
malocfp: Pointer; ralocfp: Pointer; mfreefp: Pointer; xtramemsz: size_T;
usrmempp: PPointer; charset, ncharset: ub2): sword; cdecl;

wäre hier die Lösung. Hast du Zugriff zum Code der Komponente?

CharSet WE8MSWIN1252 hat die ID 178.

Ich weiß, Zeos unterstützt das. Du könntest mit Zeos einen Export machen und dann danach alles im wieder importieren, da es sich hierbei einfach um ein Encodierungs-Problem zu handeln scheint..

Gruß Michael
  Mit Zitat antworten Zitat
tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#5

AW: TSQLConnection / Oracle / NSL_CHARACTERSET ändern

  Alt 6. Dez 2012, 14:36
oje, ich dachte das wäre so einfach wie in php
In SQL bin ich fit, aber das Ganze drum herum und DB Administration, da hab ich null Plan...

Dein Lösungsansatz wäre mir da zu hoch...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: TSQLConnection / Oracle / NSL_CHARACTERSET ändern

  Alt 6. Dez 2012, 14:59
Wenn man verschlüsselte Passwörter in einer Datenbank, XML- oder Inifile speichert
sollte man unbedingt die binären Daten hexadezimal (Base16) oder Base64 kodieren,
damit man grundsätzlich den Problemen mit dem Zeichensatz aus dem Weg geht
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz