Rtf in MySQL-Datenbank speichern

Icewurm

Lt. Junior Grade
Registriert
Juli 2006
Beiträge
277
Hallo


Wie der Titel schon sagt, möchte ich möchte ich ein rtf-Dokment auf meinem Nas in einer MySQL-Datenbank speichern.

Das Feld in der Datenbank habe ich mit LONGTEXT und latin1_general_cs angelegt.

Jetzt wollte ich mit folgendem c#-Code die Datei in die Datenbank schreiben.
Dies funktioniert aber wegen den Escapesequenzen nicht.

Habt ihr eine Lösung für mein Problem?



(DB_FKT ist meine Datenbankklasse und RTB eine Richtextbox)
Code:
...

            if (File.Exists(Rezept))
            {
                RTB.LoadFile(Rezept);
                string OriText = RTB.Rtf;

                DB_FKT.DB_schreiben("UPDATE rezepte SET RezeptText = '" + OriText + "' WHERE ID = " + IDs[i]);

                RTB.Clear();

                string RTFTXT = DB_FKT.DB_lesen_StrFeld("SELECT RezeptText FROM rezepte WHERE ID = " + IDs[i], 0);

                if (RTFTXT == OriText)
                {
                    MessageBox.Show("funktioniert");
                }            
            }

...
 
Vielleicht nicht als Text sondern als Objekt.

Ich würde jetzt intuitiv mal BLOB (Binary Large Object) versuchen.

Gruß
 
du musst schon die Daten escapen bevor du sie in der Datenbank speicherst, du hast scheinbar unbewusst dadurch eine SQL-Injektion produziert?
 
@Madman1209

Kann ich die Datei per SQL-Anweisung direkt in die Datenbank eintragen?
Muss die Datei dazu nicht am Server liegen?

Ich bin leider kein Datenbankexperte.
 
Hi,

nein, muss sie nicht. Im Prinzip schreibst du die Binärdaten (Binary Large OBject => BLOB) einfach in ein Datenbankfeld. Google einfach nach Beispielen, ist überhaupt kein Thema.

VG,
Mad
 
Zuletzt bearbeitet:
Danke schon einmal für Antworten.

Ich werde jetzt einmal die Sache mit dem direkten speichern in einem BLOB-Feld probieren


Michael
 
Hi,

gutes Gelingen. Meld dich einfach wenn es nicht klappt...und wenn's klappt auch :) Am besten mit Lösung, dann tun sich die nächsten deutlich leichter.

VG,
Mad
 
Vorerst ist das die Lösung für mein Programm. Ich habe noch nicht überprüft ob die geschriebenen Daten auch richtig sind, da ich noch keine Lesefunktion habe, aber die Größe schaut gut aus.

Code:
        public void DB_DateiInBLOB_schreiben(string Dateipfad, string Tabelle, string BLOB_Feld, string strSQL_WHERE)
        {
            string strSQL;
            FileStream fs = new FileStream(Dateipfad, FileMode.Open, FileAccess.Read);
            BinaryReader reader = new BinaryReader(fs);
            byte[] BlobValue = reader.ReadBytes((int)fs.Length);
            fs.Close();
            reader.Close();

            #if MYSQL
                strSQL = "UPDATE " + Tabelle + " SET " + BLOB_Feld + " = ?Datei " + strSQL_WHERE;

                objMySQL.Open();

                objCommand = new MySqlCommand(strSQL, objMySQL);
                objCommand.Parameters.Add("?Datei", BlobValue);

                objCommand.ExecuteNonQuery();

                objMySQL.Close();
            #endif
            #if ACCESS
            #endif
        }
 
Hi,

super! Danke auch für das Feedback, freut sicher den nächsten, der sich mit dem Problem rumschlagen muss! :)

VG,
Mad
 
Zurück
Oben