以下のコードを実行するたびに、データベースに「sam」という名前の誰かが表示されるはずですが、1 人だけが表示されるわけではありません...
public IEnumerable<Person> GetPersons(string name)
{
string PersonID;
string PersonName;
var info = new Person[] {};
try
{
string connectionString =
@"Password=nottelling;Persist Security Info=True;User ID=nottelling;Initial Catalog=customers;Data Source=db.example.com;";
using (var connection = new SqlConnection(connectionString))
{
string command = string.Format(@"SELECT Fname, PersonID, Lname FROM Person Where Fname = '{0}'",name);
connection.Open();
var getperson = new SqlCommand(command, connection);
SqlDataReader reader = getperson.ExecuteReader();
while (reader.Read())
{
PersonID = reader["PersonID"].ToString();
PersonName = reader["Fname"].ToString();
PersonName += " ";
PersonName += reader["Lname"].ToString();
info = new Person[] {new Person {PersonId = PersonID, Name = PersonName}};
}
connection.Close();
}
}
catch (Exception ex)
{
PersonID = "Error:";
PersonName = ex.Message;
info = new[] {new Person {PersonId = PersonID, Name = PersonName}};
}
return info;
}
そして人は:
namespace Calculator.Models
{
public class Person
{
public string PersonId { get; set; }
public string Name { get; set; }
}
}
別のプログラムで既に複数回テストしたため、クエリは機能します。エラーは次のものからだと思います:
info = new Person[] {new Person {PersonId = PersonID, Name = PersonName}};
info の値全体を置き換えるため、値全体を置き換えずに追加するだけです。