Bonjour,
Sous SQL Server, les chaînes se mettent entre simple quotes, et on ne peut pas combiner l'utilisation d'une fonction de chaîne avec le prédicat LIKE.
Votre requête s'écrit donc :
LIKE '%' + REPLACE(valeurRecherche,'''', '') + '%'
Vous auriez tout intérêt à placer votre code dans une procédure stockée (pour les raisons que j'évoque ici), cela vous éviterait d'avoir à écrire du code compliqué dans votre application 
Cela deviendrait, dans la base de données :
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE PROCEDURE Ps_RecherchePhotoEntreprise_ParNomEntreprise
@_nomEntreprise VARCHAR(32)
AS
BEGIN
SELECT E.Entreprise_Id,
E.Entreprise_Nom,
E.Entreprise_Desc,
P.Photo_Fichier
FROM dbo.Entreprise AS E,
INNER JOIN dbo.Photo AS P
ON E.Entreprise_Id = P.Photo_Entreprise_Id
WHERE E.Entreprise_Nom LIKE '%' + REPLACE(@_nomEntreprise,'''', '') + '%'
END |
Spécifiez vos jointures à l'aide de INNER | LEFT | RIGHT | CROSS JOIN : cela rendra votre code plus lisible puisque vous séparez les prédicats de jointures des filtres de votre requête, et dans certains cas particuliers, ce sera plus performant 
Il vous suffit ensuite d'appeler la procédure stockée dans votre code :
1 2 3 4 5 6 7 8 9 10 11
| using (SqlConnection sqlcnx = new SqlConnection(...))
{
sqlcnx.Open();
// Création de l'appel de procédure stockée
SqlCommand requete = new SqlCommand("Ps_RecherchePhotoEntreprise_ParNomEntreprise", sqlcnx);
requete.CommandType = CommandType.StoredProcedure;
requete.Parameters.Add("@_nomEntreprise", SqlDbType.VarChar, 32).Value = monEntreprise.nom
requete.ExecuteNonQuery()
... |
@++
Partager