Ado を使用して、ID で単一のレコードを取得しています。観察:
public async Task<Image> GetImage(int id)
{
var image = new Image();
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
string sql = @" SELECT * FROM Images where id = @id";
using (SqlCommand comm = new SqlCommand(sql, conn))
{
comm.Parameters.AddWithValue("@id", id);
var reader = await comm.ExecuteReaderAsync();
int ordId = reader.GetOrdinal("id");
int ordName = reader.GetOrdinal("name");
int ordPath = reader.GetOrdinal("path");
while (reader.Read())
{
image.Id = reader.GetInt32(ordId);
image.Name = reader.GetString(ordName);
image.Path = reader.GetString(ordPath);
}
return image;
}
}
}
ご覧のとおり、While を使用してレコードを繰り返し処理しています。while は、反復するレコードが複数ある可能性があることを意味しているため、単一のレコードを取得する方法が間違っている可能性があると思います。ADOが1行1フィールドに対してExecuteScalarを持っていることを考えると、1行複数フィールドに対して指定された方法があるかもしれません。ADO で単一のレコードを取得する特定の方法はありますか?