Get a single record from SQL Server the correct way

前端 未结 3 1532
孤独总比滥情好
孤独总比滥情好 2021-02-15 16:52

I\'m using Ado to retrieve a single record by id. Observe:

public async Task GetImage(int id)
{
    var image = new Image();

    using (SqlConnecti         


        
3条回答
  •  花落未央
    2021-02-15 17:02

    What if you just read once:

    using (SqlConnection conn = new SqlConnection(ConnectionString))
    {
        conn.Open();
    
        string sql = @" SELECT id, name, path FROM Images where id = @id";
    
        using (SqlCommand comm = new SqlCommand(sql, conn))
        {
            comm.Parameters.AddWithValue("@id", id);           
    
            using (var reader = await comm.ExecuteReaderAsync())
            {
                if (!reader.Read())
                     throw new Exception("Something is very wrong");
    
                int ordId = reader.GetOrdinal("id");
                int ordName = reader.GetOrdinal("name");
                int ordPath = reader.GetOrdinal("path");
    
                image.Id = reader.GetInt32(ordId);
                image.Name = reader.GetString(ordName);
                image.Path = reader.GetString(ordPath);
    
                return image;
            }
        }
    }
    

    P.S.: I have also changed select statement to select only required fields and wrapped reader in using statement.

提交回复
热议问题