SqlDataReader à lire dans la Liste des<string>

Je suis en train d'écrire une méthode en C# pour interroger une base de données SQL Server Express à partir d'un service WCF. J'ai utiliser ADO.NET pour ce faire (puis le réécrire avec LINQ plus tard).

La méthode prend deux chaînes de caractères (fname, lname) puis renvoie une "Assurance Santé PAS de" attribut de l'enregistrement correspondant. Je veux lire cela dans une liste (il y en a quelques autres attribs à récupérer).

Le code actuel retourne une liste vide. Où vais-je tort?

public List<string> GetPatientInfo(string fname, string lname)
{
    string connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\xxxx\\Documents\\Visual Studio 2010\\Projects\\ADOWebApp\\ADOWebApp\\App_Data\\ADODatabase.mdf;Integrated Security=True;User Instance=True";

    SqlConnection conn = new SqlConnection(connString);

    string sqlquery = "SELECT Patient.* FROM Patient WHERE ([First Name] = '"+fname+"') AND ([Last Name] = '"+lname+"')";
    SqlCommand command = new SqlCommand(sqlquery, conn);
    DataTable dt = new DataTable();

    List<string> result = new List<string>();

    using (conn)
    {
        conn.Open();

        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader != null && reader.Read())
            {
               dt.Load(reader);
               result.Add(Convert.ToString(reader["Health Insurance NO"]));
            }
        }
     }

     return result;
}
Bien le déboguer. Est-il entrer dans le while bloc? Faut-il réellement exécuter le result.Add ligne? Également exécuter la même chose sur la base de données vous-même: prendre la valeur de sqlquery et l'exécuter sur la base de données manuellement.
Vous assurer que vous êtes réellement obtenir des données?
vous avez raison... ce n'est pas l'exécution de cette ligne. J'ai fait exécuter la requête manuellement pour être sûr que c'était correct, il renvoie l'enregistrement correct. Toutes mes excuses, j'ai été d'insérer des points d'arrêt et en essayant de débogage pour presque 3 jours maintenant...!
Sachant cela, maintenant, je suis soupçonner la chaîne de connexion peut être le coupable. Je vais jeter un oeil et de faire rapport.
Vous avez des bugs mentionnés de toute façon. Donc, le chargement d'une DataTable dans une boucle avec Load est inutile, à l'aide de pas de sql-paramètres est dangereux, à l'aide de SqldataReader.Read avec DataTable.Load n'est pas nécessaire, à l'aide d'un DataTable quand vous avez besoin d'une liste est redondante.

OriginalL'auteur reallybadatmath | 2013-10-10