MSSQL: Riesige Textdatei mit viel Sonderzeichen in Datenbank eintragen

Nexus2kSwiss

Mitglied
Ich schreibe grad ein Programm in C#, das mir ein Text mit 20000 Zeichen in die Datenbank eintragen soll. Jedoch kommt beim Eintragen immer der Fehler:

Zeile 212: Falsche Syntax in der Nähe von 't'. Bezeichner (beginnend mit 'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛ') ist zu lang. Maximallänge beträgt 128.
Öffnendes Anführungszeichne vor der Zeichenfolge 'ÛÛÛÛÛÛÛÛÛÛÛÛÛvv ÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛ'.

Mir siehts so aus, als ob der Insert:
cmd.CommandText="Insert into media (titel,fk_typ,Anzahl,fk_medium,datum,hilfetxt,ort)";cmd.CommandText+=" values ('"+MedTitel.Text+"',"+curtyp+","+MedAnzahl.Text+","+curmed+","+DateTime.Now.ToOADate()+",'"+MedHilfetxt.Text+"','"+MedOrt.Text+"')";

Bei MedHilfetxt.Text kommt eben der 20000 lange zeichen string rein. Gibt es ne möglichkeit, das ganze irgendwie als Packet (halt als eine einheit) statt als jeweils einzelne Zeichen zu inserten ? oder gibts soetwas wie Super ' , die alles als Text annehmen, was innerhalb von 2 ' sind ?
Datentyp des SQL feldes ist Text

Wäre um jede Hilfe froh
 
Probier doch mal, alle Werte (auch die numerischen) in Hochkommas zu setzen, also auch die Werte für die Felder fk_typ, Anzahl, fk_medium und datum.
Bin leider in C# nicht sonderlich bewandert, aber wenn es so ist, dass Du mit DateTime.Now.ToOADate() das aktuelle Datum in die DB eintragen willst, dann kannst Du das ja mal durch die SQL-Funktion NOW() ersetzen, so hat das Datum schon mal auf jeden Fall das richtige Format. Es wird allerdings dann das Server-Datum verwendet und nicht das Datum des Clients - es sit also nicht ganz exakt das selbe.
Durch diese Maßnahmen würdest Du mal ausschließen, dass der Fehler irgendwo anders steckt. Die Fehlermeldung deutet IMHO nämlich in diese Richtung ("Bezeichner" zu lang...).
Außerdem solltest Du sicher stellen, dass der superlange Text in MedHilfetxt.Text korrekt "escaped" ist, also dass jedem Vorkommen von Hochkommas innerhalb des Textes ein \ (Backslash) vorangestellt ist. Keine Ahnung wie das in C# geht, in PHP hieße die Funktion addslashes().
Rein theoretisch dürfte es jedenfalls nicht an der Länge des Textes liegen, ich habe auch schon so lange Texte in ein MySQL-TEXT-Feld geschrieben - wurde von MySQL und PHP ohne Murren erledigt...

Viel Erfolg noch,
Martin
 
Problem gelöst. Habe eine Funktion gefunden, die mir den String escaped.

Code:
public static string sanitize(string strInput)

{

string strResult = "";

for (int i=0; i < strInput.Length; i++)

{

strResult += strInput.Substring(i ,1);

if (strInput.Substring(i, 1) == "'")

strResult += "'";

}

return strResult;

}

Vielen Dank für die hilfe
 
Zurück