![]() |
Datenbank: SQL Server • Version: 2008 • Zugriff über: ADO
Text aus Memo in Datenbankfeld eintragen
Hallo,
ich habe folgendes Problem, ich nutze einen SQL Server 2008 und will in einer Tabelle den Body einer zuverschikenden Email speichern, und habe hierzu eine Tabelle angelegt tblEmail
SQL-Code:
Das Feld Body habe ich als text angelegt.
CREATE TABLE [dbo].[tblEmail](
[EmailID] [bigint] NULL, [EmailHost] [nvarchar](50) NULL, [EmailUserName] [nvarchar](50) NULL, [EmailPort] [bigint] NULL, [Sender] [nvarchar](50) NULL, [Headline] [nvarchar](50) NULL, [Body] [text] NULL, [EmailPasswort] [nvarchar](50) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] Nun will ich einen Mehrzeiligen Text aus einem Memo Feld in meiner Datenbank speichern, dazu muss ich den Wert auslesen in ein Memo laden ändern und zurückschreiben können.
Delphi-Quellcode:
Leider wird bei der Methode die ich anwende immer nur der 1. String gespeichert des Memos. Ich weiß nicht wo das Problem ist.
with TADOQuery.Create(Self) do
begin Connection := ADOConnection1; SQL.Clear; Active := False; SQL.Text := 'SELECT * FROM tblEmail'; Active := True; First; Edit; //Test ShowMessage(emaildat.body.Text); FieldByName('Body').AsWideString:=emaildat.body.Text; // Hier wird immer nur die 1. Zeile in der DB gespeichert... Update; end; // of with TADOQuery.Create(Self) do end; // of function TFrmMainGUI.GetEmailData(var emaildat: REmailInfos): Boolean; Vielleicht könnt ihr mir ja helfen Danke Gruß DM |
Re: Text aus Memo in Datenbankfeld eintragen
Es scheint ich an den Zeilenumbrüchen zu stören. Ich würde es mal mit Hilfe eines Blobparameters versuchen
|
Re: Text aus Memo in Datenbankfeld eintragen
Versuch es doch mal so, das ist nicht nur sicherer (SQL-Injection) sondern auch schneller.
Delphi-Quellcode:
with TADOQuery.Create( Self ) do
try Connection := ADOConnection1; // SQL.Clear; // Active := False; SQL.Text := 'UPDATE tblEmail SET Body = :Body WHERE EmailID = :EmailID'; Prepare; // Vorbereiten, dann ist die Verarbeitung u.U. schneller // Werte an die Parameter übergeben ParamByName( 'EmailID' ).Value := 1; // Hier natürlich die entsprechende ID benutzen ParamByName( 'Body' ).Value := emaildat.body.Text; // Ausführen ExecSQL; finally Free; // wir sind ordentlich und räumen auf end; // of with TADOQuery.Create(Self) do end; // of function TFrmMainGUI.GetEmailData(var emaildat: REmailInfos): Boolean; |
Re: Text aus Memo in Datenbankfeld eintragen
Hallo,
EDIT:Problem gelöst @Sir Rufo,@Mkinzler danke für deinen Vorschlag, ich werde jetzt ein Update des Feldes machen, so wie du es vorgeschlagen hast. Hat im ersten Ansatz nicht funktioniert, da ich auf den falschen Index zugegriffen habe, mein Fehler, aber jetzt mit Deklaration des Feldes als VARCHAR(MAX) und der Update Syntax klappts Danke an Alle! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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-2025 by Thomas Breitkreuz