J'ai réécrit votre code pour utiliser un paramètre de requête. Vous voulez éviter de mettre des chaînes directement dans vos requêtes comme ça (le type devrait probablement être normalisé de toute façon). La fonction principale devrait probablement retourner une liste de clients à votre couche de présentation, qui serait alors responsable de l'affichage des clients, mais je ne suis pas allé aussi loin.
Étant donné que votre requête a fonctionné à partir de Management Studio, les paramètres de classement de votre base de données devraient être corrects.
public void ListClientsByType(string clientType)
{
using (IDbConnection conn = new SqlConnection("connectionstring"))
{
IDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT nam FROM clients WHERE typ = @type";
cmd.Parameters.Add(
_CreateInputParameter(cmd, DbType.String, "@type", clientType));
conn.Open();
IDataReader dr = null;
try
{
dr = cmd.ExecuteReader();
// Work with results here
}
finally
{
if (dr != null)
dr.Close();
}
}
}
private IDbDataParameter _CreateInputParameter(
IDbCommand cmd, DbType type, string name, object value)
{
IDbDataParameter p = cmd.CreateParameter();
p.DbType = DbType.String;
p.Direction = ParameterDirection.Input;
p.ParameterName = name;
p.Value = value;
return p;
}
(1.) Vous devriez vraiment utiliser les étiquettes de code (le bouton 101010) pour mettre en évidence votre code; cela le rend beaucoup plus facile à lire. (2.) Vous dites que le nom d'utilisateur est en arabe, mais votre instruction 'WHERE' utilise la colonne' typ'. Êtes-vous sûr d'avoir la bonne colonne dans votre déclaration «WHERE»? – LittleBobbyTables
je suis débutant pour ce site alors pouvez-vous m'aider et me dire comment mettre en évidence mon code s'il vous plaît –
désolé je voulais dire il y a un nom d'utilisateur qui a ce type je vais l'éditer –