Autor Beitrag
Marc Dirk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Sa 13.04.13 00:44 
Hallo Ihr Lieben!

Ich habe nach langer Zeit mal wieder ein kniffliges Problem. :autsch:

Aus meiner richTextBox heraus schreibe ich die Rtf-Daten in meine SQL-CE Datenbank. Bis hier her alles o.K. Auch wenn Umlaute im Text vorkommen.
Den gleichen Datensatz wieder aufgerufen, nichts geändert oder ergänzt, löst das Update der Tabelle eine Exception aus.
Lösche ich beim ändern in der richTextBox nun die Umlaute raus, dann klappt alles wieder bestens.

Kennt jemand den Fehler und hat eine Idee?

Hier mein Code-Schnipsel:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
if (global_string.AufgabeSender == "ribbonButton_AufgabeBearbeiten_Click")
{
   global_string.SqlCommandText = "UPDATE Aufgabe SET Aufgabe_Text = '" + ExtRichTextBox_Aufgabenbeschreibung.Rtf + "', Änderungsdatum = GetDate() WHERE ID_Aufgabe = '" + ID_Aufgabe + "'";
   
   proc_write_to_database(global_string.ConnectionString, global_string.SqlCommandText);
}

if (global_string.AufgabeSender == "ribbonButton_NeueAufgabe_MultipleChoice_Click")
{
                
   global_string.SqlCommandText = "INSERT INTO Aufgabe (Gültigkeit, ID_Aufgabe, ID_Fach, ID_Schule, Aufgabe_Text, Aufgabentypus, Phase, Erstellungsdatum, Änderungsdatum) VALUES ('true','" + New_ID_Aufgabe + "','" + ID_Fach + "','" + ID_Schule + "','" + ExtRichTextBox_Aufgabenbeschreibung.Rtf + "','1','1',GetDate(),GetDate())";
   
   proc_write_to_database(global_string.ConnectionString, global_string.SqlCommandText);
}


private void proc_write_to_database(string string_ConnectionString, string string_SqlCommandText)
{
   SqlCeConnection obj_SqlCeConnection = null;
   try
   {
      obj_SqlCeConnection = new SqlCeConnection(string_ConnectionString);
      obj_SqlCeConnection.Open();
      SqlCeCommand obj_SqlCeCommand = obj_SqlCeConnection.CreateCommand();
      obj_SqlCeCommand.CommandText = string_SqlCommandText;
      obj_SqlCeCommand.ExecuteNonQuery();
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.ToString());
   }
   finally
   {
      obj_SqlCeConnection.Close();
   }
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 13.04.13 08:55 
Hallo Marc Dirk,

wie lautet denn genau die Exception?

P.S. Beim Zugriff auf die Datenbank solltest du SQL-Parameter benutzen (anstatt String-Frickeleien), s. z.B. SQL Server Compact Abfrage (insb. der dort verlinkte Artikel SQL-Parameter).
Ein einfaches Hochkomma im Text würde beispielsweise schon einen Fehler verursachen (ganz zu schweigen von SQL-Injection).
Marc Dirk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Mi 17.04.13 19:59 
Vielen Dank Th69!

Der Artikel war sehr aufschlussreich und ich denke ich habe mein Problem jetzt erkannt. 'Werd es jetzt testen.

Gruss
Marc