Je suis en train de corriger bug guillemet simple dans le code:False Alarm: SqlCommand, SqlParameter et des guillemets simples
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;
Le bug est que si IDX = « qui est », le SQL échoue en disant qu'il ya une erreur de syntaxe. De toute évidence, le problème est dans la citation. Mais certains googlings montre que l'utilisation de paramètres est la façon de travailler avec des guillemets. Et SqlParameter fonctionne bien, si le type est TEXT et non VARCHAR.
Il existe d'autres solutions que de doubler manuellement le nombre de symboles de citation dans la chaîne? Mise à jour: J'ai essayé de modifier manuellement ce champ dans SQL Management Studio et il n'a pas autorisé les guillemets simples dans le champ VARCHAR. C'est normal en SQL?
Etes-vous absolument certain que c'est le devis unique? Quel est le message d'erreur réel? – Steven
Oui. Le message d'erreur est: "Syntaxe incorrecte près de" S ".". –