Как отправить байтовый массив в набор данных и прочитать из него

1

Я хочу отправить байты в наборе данных, и у меня есть столбец типа данных varbinary (MAX). Когда я пытаюсь отправить массив байтов, вместо отображения массива байтов в наборе данных он отображает приведенные ниже данные. Я не знаю, является ли это чистым байтовым массивом или показывает байты. То, о чем я думал, столбец "ProjectIcons" должно возвращать значение, подобное {bytes [1305]}....

1) Если это байты, то как я могу прочитать байты из набора данных. Изображение 174551

Пожалуйста, дайте мне знать, где я ошибаюсь. Я использую код ниже:

public DataSet GetAllProjectStandardIcons2()
    {
        var images = (from p in dbModel.tbl_STANDARDPROJECTICONS select new ProjectDetails1 
        {   
            id = p.id,
            ProjectIcons = (Byte[])(p.ProjectIcons)
        }).ToList();

        DataTable dt = new DataTable();
        if (images.Count > 0)
            {
                Byte[] ProjectIcons;
                DataColumn dc = new DataColumn("id");
                DataColumn dc1 = new DataColumn("ProjectIcons");
                dt.Columns.Add(dc);
                dt.Columns.Add(dc1);
                for (var i = 0; i < images.Count(); i++)
            {

                DataRow row = dt.NewRow();
                row["id"] = images[i].id;
                ProjectIcons = (Byte[])images[i].ProjectIcons;
                row["ProjectIcons"] = ProjectIcons;
                dt.Rows.Add(row);
            }
        }
        DataSet ds = new DataSet();
        ds.Tables.Add(dt);
        return ds;
    }
Теги:
dataset
bytearray

2 ответа

2
Лучший ответ

попробуйте сохранить изображение в формате Base64 и получить в том же формате, после чего попробуйте преобразовать его в байты... попробуйте следующий код

for (var i = 0; i < images.Count(); i++)
                {

                    DataRow row = dt.NewRow();
                    row["id"] = images[i].id;
                    row["ProjectIcons"] = Convert.ToBase64String(images[i].ProjectIcons);//convert here byte array to base64
                    dt.Rows.Add(row);
                }
2

Я нашел решение Необходимость конвертировать bytearray в base64 массив ниже - это код, который работает для меня

public DataSet GetAllProjectStandardIcons2()
        {
            var images = (from p in dbModel.tbl_STANDARDPROJECTICONS
                          select new ProjectDetails1
                          {
                              id = p.id,
                              ProjectIcons = (Byte[])(p.ProjectIcons)

                          }).ToList();


            DataTable dt = new DataTable();
            if (images.Count > 0)
            {
                Byte[] ProjectIcons;
                DataColumn dc = new DataColumn("id");
                DataColumn dc1 = new DataColumn("ProjectIcons");
                dt.Columns.Add(dc);
                dt.Columns.Add(dc1);
                for (var i = 0; i < images.Count(); i++)
                {

                    DataRow row = dt.NewRow();
                    row["id"] = images[i].id;
                    row["ProjectIcons"] = Convert.ToBase64String(images[i].ProjectIcons);//convert here byte array to base64
                    dt.Rows.Add(row);
                }
            }
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;

        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню