Frage

Ich versuche Apostroph Fehler im Code zu beheben:

std::string Index;

connection->Open();
String^ sTableName = gcnew String(TableName.c_str());
String^ insertstring = String::Format("INSERT INTO {0} (idx, rec, date) VALUES (@idx,    @rec, getdate())", sTableName);
SqlCommand^ command = gcnew SqlCommand(insertstring, connection);
String^ idx = gcnew String(Index.c_str());
command->Parameters->Add("@idx", SqlDbType::VarChar)->Value = idx;

Der Fehler ist, dass wenn idx = „das ist“, schlägt der SQL sagen, dass es ein Syntaxfehler ist. Offensichtlich ist das Problem in dem Zitat. Aber einige googeln zeigen, dass mit Hilfe von Parametern ist die Art und Weise mit Zitaten zu arbeiten. Und SqlParameter funktioniert gut, wenn der Typ TEXT und nicht VARCHAR.

Es gibt keine andere Lösungen als manuell Anzahl der Kurs Symbole in der Zeichenfolge verdoppelt?

Update: Ich habe versucht, manuell in SQL Management Studio dieses Feld zu bearbeiten und es hat nicht einfache Anführungszeichen in VARCHAR Feld ermöglichen. Es ist das normal in SQL?

War es hilfreich?

Lösung

Ich vermute, dass das Problem ist entweder ein Zitat in Ihrem Tabellennamen bekommt, oder dass idx klingt wie der Name einer Nummerntyp als ein Zeichentyp.


Auf der Basis Ihrer Update, empfehle ich Ihnen für zusätzliche Beschränkungen auf dem Tisch Check-in-Management-Studio.

Andere Tipps

Um ehrlich zu sein habe ich noch nie ein Problem mit SqlParameters hatte. Aber versuchen Sie wie folgt vor:

http://msdn.microsoft .com / en-us / library / system.data.sqlclient.sqlparametercollection.addwithvalue.aspx

command->Parameters->AddWithValue("@idx", idx);

Das sollte funktionieren und kodieren richtig für Sie.

Wenn Sie sicher sind, ist es ein Anführungszeichen prob dann,

C # -Code:

idx = idx.Replace("'", "''"); 

würde das Problem lösen.

Es tut uns Leid.

Das Problem war in SQL-Trigger Code. Nachdem sie zu entfernen, alles hat gut funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top