RTF in Mysql Speichern und Laden

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    RTF in Mysql Speichern und Laden

    Hallo zusammen. Ich habe mich jetzt schon ein paar Stunden im Forum etc umgesehen aber einfach keine Lösung gefunden.

    Kurz der Hintergrund. Ich hab ein Dataset das sie beim Starten die Daten von einem Mysql Server holt. Sobald ich ein neuen Datensatz einfüge schickt er den Befehl an die Mysql Table und Ladet danach das Dataset/ den Datatable neu.

    Ich will eine RTF Datei in Der Mysql Datenbank speichern. Lasse sie hierzu in einer Richtextbox anzeigen mittels:

    VB.NET-Quellcode

    1. RichTextBox1.Rtf = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName)


    Sobald ich es aber wieder abrufe zeigt es an das der Datentyp der Falsche sei. Rufe es ab Mittels:

    VB.NET-Quellcode

    1. RichTextBox1.Rtf = DataGridViewEx1.CurrentRow.Cells(14).Value.ToString


    Habe es auch schon versucht erst in einen String zu laden. Bringt auch nichts. Wenn ich es mit Richtextbox1.text anzeigen lasse, zeigt es den rohen Text an.

    Der Typ in der MySQL Datenbank ist: VARCHAR(9999)

    Der Typ vom Datatable ist: System.String

    Bitte um Hilfe. Danke im vorraus :)
    im gezeigten Code sehe ich nichts, worauf zutreffen könnte:

    Mike4142 schrieb:

    zeigt es an das der Datentyp der Falsche sei.
    was also meinst du mit "anzeigen", und was mit "der falsche Datentyp"?

    Mike4142 schrieb:

    Der Typ vom Datatable ist: System.String
    Der Typ vom Datatable kann niemals String sein. Was also meinst du?
    Hast du überprüft was hier DataGridViewEx1.CurrentRow.Cells(14).Value.ToString raus kommt?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    ErfinderDesRades schrieb:

    im gezeigten Code sehe ich nichts, worauf zutreffen könnte:

    Mike4142 schrieb:

    zeigt es an das der Datentyp der Falsche sei.
    was also meinst du mit "anzeigen", und was mit "der falsche Datentyp"?

    Mike4142 schrieb:

    Der Typ vom Datatable ist: System.String
    Der Typ vom Datatable kann niemals String sein. Was also meinst du?


    Selbstverständlich kann das. Ich öffne den Table Designer und wähle das gewollte Feld aus, in meinem Fall das Feld Anlagen. Dort zeigt es mir dann im DataType System.String an.

    mrMo schrieb:

    Hast du überprüft was hier DataGridViewEx1.CurrentRow.Cells(14).Value.ToString raus kommt?


    Das mit dem falschen Datentyp kann ich auch nicht nachvoll ziehen. Es zeigt in der Fehlermeldung auch nicht viel mehr an.

    Ja klar. Es sieht eigentlich dann auch wie RTF Text aus. Kann es später mal posten.

    Mike4142 schrieb:

    Selbstverständlich kann das. Ich öffne den Table Designer und wähle das gewollte Feld aus, in meinem Fall das Feld Anlagen. Dort zeigt es mir dann im DataType System.String an.
    Das ist doch etwas ganz anderes!
    Da ist nicht "der Typ vom Datatable String", sondern der Typ der AnlagenColumn der DataTable ist String.
    (Ich nehme mal an, mit "Table Designer" meinst du den Dataset-Designer des VisualStudio.)

    Und noch einmal - in dieser deiner Zeile:

    VB.NET-Quellcode

    1. RichTextBox1.Rtf = DataGridViewEx1.CurrentRow.Cells(14).Value.ToString
    kann keine Fehlermeldung von wegen eines falschen Datentyps kommen.
    Weil die Richtextbox.Rtf-Property ist vom Typ String, und der zugewiesene Ausdruck kann auch nichts anderes als String sein - das erzwingt die .ToString - Methode.

    Mike4142 schrieb:

    Kann es später mal posten.
    ja - mach mal - evtl. mit Bildle der Fehlermeldung.
    Im Anhang das Bild :)

    Hoffe es hilft weiter.. Weil viel steht nicht drauf..

    Und das kommt raus wenn ich es anstatt mit .rtf mit .text anzeigen lasse:

    Quellcode

    1. {
    2. tf1ansiansicpg1252deff0deflang1031{fonttbl{f0fnilfcharset0 Calibri;}}
    3. {colortbl ;
    4. ed255green0lue0;}
    5. viewkind4uc1pardsa200sl276slmult1lang7strikef0fs20 Das ist eine RTF Test...strike0fs22par
    6. par
    7. Hoffe es klapptpar
    8. par
    9. cf1ulfs44'dcberschriftcf0ulnone0fs22par
    10. }


    Habe es jetzt auch noch einmal abgefangen bevor es an die MySQL gesendet wird:

    Quellcode

    1. ​{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
    2. {\colortbl ;\red223\green206\blue4;\red0\green128\blue0;}
    3. \viewkind4\uc1\pard\sa200\sl276\slmult1\cf1\lang7\ul\strike\f0\fs22 Test\cf0\ulnone\strike0\par
    4. \fs36\par
    5. \highlight2\b Test1\highlight0\b0\par
    6. \i\fs22\par
    7. Test2\par
    8. }
    Bilder
    • Unbenannt.png

      91,03 kB, 1.280×1.160, 212 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mike4142“ ()

    Ja, du musst beim Insert die CommandParamaters nutzen.

    -> msdn.microsoft.com/de-de/libra…255&MSPPError=-2147217396

    Die sollte man eh immer benutzen, da hier keine SQL-Injektion möglich ist.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Beim Speichern des RTF-Textes in die DB gehen Zeichen wie \ verloren. Diese werden aber benötigt um den RTF-Text sauber anzeigen zu können.

    mrMo schrieb:

    (...) beim Insert die CommandParamaters nutzen.

    -> msdn.microsoft.com/de-de/libra…255&MSPPError=-2147217396
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    Beim Speichern des RTF-Textes in die DB gehen Zeichen wie \ verloren. Diese werden aber benötigt um den RTF-Text sauber anzeigen zu können.

    mrMo schrieb:

    (...) beim Insert die CommandParamaters nutzen.

    -> msdn.microsoft.com/de-de/libra…255&MSPPError=-2147217396


    Ok, danke. Dann muss ich mich wohl da einlesen.. bekomme ich so auch das eigentliche Problem gelöst oder bringt es mir nur was im hinblick auf die Sicherheit?
    Damit kannst du das Problem lösen und schützt dich vor SQL-Injektions. Ne feine Sache also.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen