AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Text aus Memo in Datenbankfeld eintragen
Thema durchsuchen
Ansicht
Themen-Optionen

Text aus Memo in Datenbankfeld eintragen

Ein Thema von DelphiManiac · begonnen am 28. Mai 2010 · letzter Beitrag vom 28. Mai 2010
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Text aus Memo in Datenbankfeld eintragen

  Alt 28. Mai 2010, 22:53
Datenbank: SQL Server • Version: 2008 • Zugriff über: ADO
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:
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]
Das Feld Body habe ich als text angelegt.

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:
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;
Leider wird bei der Methode die ich anwende immer nur der 1. String gespeichert des Memos. Ich weiß nicht wo das Problem ist.
Vielleicht könnt ihr mir ja helfen

Danke
Gruß
DM
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Text aus Memo in Datenbankfeld eintragen

  Alt 28. Mai 2010, 23:06
Es scheint ich an den Zeilenumbrüchen zu stören. Ich würde es mal mit Hilfe eines Blobparameters versuchen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Text aus Memo in Datenbankfeld eintragen

  Alt 28. Mai 2010, 23:10
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

Re: Text aus Memo in Datenbankfeld eintragen

  Alt 28. Mai 2010, 23:38
Hallo,

EDITroblem 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!
  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 15:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz