Hallo, alle miteinander!
Ich habe ein Zugriffsproblem bei dem Versuch in eine
MySQL-Datenbank per BlobStream zu schreiben. Und zwar passiert folgendes:
Beim Start der Anwendung wird ein TDatabase-Objekt initialisiert, das eine Verbindung zu einer
MySQL-
DB auf einem Server aufbaut. Die Verbindung steht. Ich kann lesend und schreibend auf die Daten zugreifen.
Es gibt in der Datenbank allerdings ein BLOB, in das ich schreiben muss (lesen ist kein Problem). Das Schreiben passiert in folgender Prozedur:
Delphi-Quellcode:
procedure TMySQL.UpdateNormenkette(ID: Integer; NormenKette:
String);
var
BS: TBlobStream;
NK: PChar;
begin
with FQuery
do begin
RequestLive := True;
SQL.Clear;
SQL.Add ( '
SELECT * FROM entscheidungen WHERE ID = ' + IntToStr ( ID ) );
Open;
if RowsAffected > 0
then begin
First;
if CanModify
then begin
Edit;
BS := TBlobStream.Create ( TBlobField ( FieldByName ( '
normenkette' ) ), bmWrite );
try
NK := PChar ( NormenKette );
BS.
Write ( NK, Length ( NormenKette ) + 1 );
finally
BS.Free;
end;
Post;
end;
end;
Close;
RequestLive := False;
end;
Der Fehler tritt auf, in dem Augenblick, in dem das "Post" abgesetzt wird. Hier bekomme ich die Fehlermeldung, dass der
Access für Benutzer "@meinRechner" denied ist. Erstaunlicherweise ist hier offensichtlich kein Benutzer bekannt... sonst würde ja die Meldung "benutzer@meinRechner" erscheinen...
Spaßeshalber habe ich mal folgenden Code geschrieben:
Delphi-Quellcode:
procedure TMySQL.UpdateNormenkette(ID: Integer; NormenKette:
String);
var
BS: TBlobStream;
NK: PChar;
begin
with FQuery
do begin
RequestLive := True;
SQL.Clear;
SQL.Add ( '
SELECT * FROM entscheidungen WHERE ID = ' + IntToStr ( ID ) );
Open;
if RowsAffected > 0
then begin
First;
if CanModify
then begin
Edit;
FieldByName ( '
id' ).AsInteger := ID;
Post;
end;
end;
Close;
RequestLive := False;
end;
Dieser schreibende Zugriff funktioniert... Ich habe also ein Problem mit dem BlobStream...
Hat jemand ein ähnliches Problem gehabt und gelöst?
Matthias