J'utilise SQL Server 2008 comme mon moteur de base de données dans une application Web ASP.NET C # ASP.NET C #. Mon projet est farsi (persan) alors j'ai utilisé J'utilise la requête suivante pour trouver des lignes de ma base de données, mais rien n'est retourné, alors que j'ai une ligne avec le mot clé spécifié. Bien sûr, mon mot-clé est en persan (Unicode). P> Qu'est-ce qui ne va pas ici? Est-ce parce que l'utilisation de la langue faritique? Comment puis-je rechercher dans nvarchar code> et
ntext code> comme types de données.
nvarchar code> et
NText code> colonnes contenant des caractères Unicode? P>
myCommand = new SqlCommand("select * from tblArticle where name LIKE '%" + txtSearch.Text + "%'", SQLConnection);
3 Réponses :
Je ne suis pas familier avec c # code>
asp.net code>, mais en utilisant
nvarchar code> ou
ntext code> ne doit pas faire toute différence dans le type de requête. Je suis errant que vous n'abandonnez que votre commande de requête à une variable et ne l'exécutant pas ..
Si vous faites quelque chose comme
myCommand.execute () code>? p>
Vous devez utiliser le préfixe sinon, vous convertissez votre chaîne de recherche à la non-unicode puis à la recherche de .... p> p> n ' code> pour indiquer que vous recherchez une chaîne unicode:
Merci Marc, cela a résolu mon problème! Vous m'avez aidé plusieurs fois. Merci encore
Vous devez utiliser associer latin1_general_bin2 code> pour obtenir des résultats. Fonctionne pour amharique pour les Ethiopiens.
Select * From YourTableName where ColNameYouSearch LIKE N'%YourSerchCriteria%' COLLATE Latin1_General_BIN2"
NTEXT CODE> est obsolète - NE PAS B> Utilisez-le pour de nouveaux projets! Utilisez
nvarchar (max) code> à la place - cela facilite la recherche de beaucoup plus facile!
Aussi: Vous devez utiliser Queries paramétrisées B> au lieu de concaténer votre commande SQL! Cette approche est très vulnérable aux attaques d'injection SQL b> - ne l'utilisez pas.
Merci Marc, mais cette recherche est en cours dans un domaine Nvarchars, et je n'ai aucun résultat! Bien que je puisse facilement voir cette valeur exacte dans ma base de données, qu'est-ce qui se passe ici?