Einzelnen Beitrag anzeigen

mjenke

Registriert seit: 28. Mär 2003
Ort: Bonn
131 Beiträge
 
#1

Zugriffsfehler mit TBlobStream

  Alt 1. Feb 2007, 12:03
Datenbank: MySQL • Version: 3.23.55 • Zugriff über: BDE, ODBC
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
Matthias Jenke
  Mit Zitat antworten Zitat