Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2018, 21:28   #1
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию Загрузить картинку из бд firebird в PictureBox

Сохранение в бд работает. картинка вставляется и при проверке через IBExpert корректно отображается
Код:
 FbCommand SaveUchastInfo;
            if (Form1.AddUchast)
                SaveUchastInfo = new FbCommand("INSERT INTO UCHASTKOVUI (SURNAME, NAME, OTCHESTVO, ZVANIE, PHONE, DAYS, TIMEP, NOMER_UPP, TAB_NO, FOTO) VALUES (@SURNAME, @NAME, @OTCHESTVO, @ZVANIE, @PHONE, @DAYS, @TIMEP, @NOMER_UPP, @TAB_NO, @FOTO)", Form1.policy_db);
            else
                SaveUchastInfo = new FbCommand("UPDATE UCHASTKOVUI SET SURNAME=@SURNAME, NAME=@NAME, OTCHESTVO=@OTCHESTVO, ZVANIE=@ZVANIE, PHONE=@PHONE, DAYS=@DAYS, TIMEP=@TIMEP, NOMER_UPP=@NOMER_UPP, FOTO=@FOTO WHERE TAB_NO="+Form1.TabNoS, Form1.policy_db);

            Image Foto = FotoUchast.Image;
            MemoryStream MS = new System.IO.MemoryStream();
            Foto.Save(MS, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] B = MS.ToArray();

            SaveUchastInfo.Parameters.Add("@SURNAME", FbDbType.VarChar).Value = SurnameTB.Text;
            SaveUchastInfo.Parameters.Add("@NAME", FbDbType.VarChar).Value = NameTB.Text;
            SaveUchastInfo.Parameters.Add("@OTCHESTVO", FbDbType.VarChar).Value = OtchTB.Text;
            SaveUchastInfo.Parameters.Add("@ZVANIE", FbDbType.VarChar).Value = ZvanieTB.Text;
            SaveUchastInfo.Parameters.Add("@PHONE", FbDbType.VarChar).Value = PhoneTB.Text;
            SaveUchastInfo.Parameters.Add("@DAYS", FbDbType.VarChar).Value = DaysTB.Text;
            SaveUchastInfo.Parameters.Add("@TIMEP", FbDbType.VarChar).Value = TimeTB.Text;
            SaveUchastInfo.Parameters.Add("@NOMER_UPP", FbDbType.VarChar).Value = UppTB.Text;
            SaveUchastInfo.Parameters.Add("@TAB_NO", FbDbType.VarChar).Value = TabNoTB.Text;
            SaveUchastInfo.Parameters.Add("@FOTO", FbDbType.Binary).Value = B;

            Form1.TabNoS = TabNoTB.Text;

            SaveUchastInfo.ExecuteNonQuery();
А вот загрузку никак не могу сделать
Код:
FbCommand SelUchast;
            FbDataReader SelUchastRes;
            if (Form1.AddUchast == false)
            {
                SelUchast = new FbCommand("SELECT * FROM UCHASTKOVUI WHERE TAB_NO="+Form1.TabNoS,Form1.policy_db);
                SelUchastRes = SelUchast.ExecuteReader();
                if (SelUchastRes.Read()) {
                    // загружаем картинку
                    byte[] img = Encoding.ASCII.GetBytes(SelUchastRes["FOTO"].ToString());
                    if (img == null)
                        FotoUchast.Image = null;
                    else
                    {
                        MemoryStream ms = new MemoryStream(img);
                        FotoUchast.Image = Image.FromStream(ms);
                    }
 
                    SurnameTB.Text = SelUchastRes["SURNAME"].ToString();
                    NameTB.Text = SelUchastRes["NAME"].ToString();
                    OtchTB.Text = SelUchastRes["OTCHESTVO"].ToString();
                    ZvanieTB.Text = SelUchastRes["ZVANIE"].ToString();
                    PhoneTB.Text = SelUchastRes["PHONE"].ToString();
                    DaysTB.Text = SelUchastRes["DAYS"].ToString();
                    TimeTB.Text = SelUchastRes["TIMEP"].ToString();
                    UppTB.Text = SelUchastRes["NOMER_UPP"].ToString();
                    TabNoTB.Text = SelUchastRes["TAB_NO"].ToString();
                    
                }
            }
выдает ошибку "Недопустимый параметр" на строчке FotoUchast.Image = Image.FromStream(ms);
Anton_Jag вне форума Ответить с цитированием
Старый 19.04.2018, 22:40   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Сохраняешь ты байтовый массив, когда загружаешь, то делаешь массиву ToString. Думаю, что надо делать что-то вроде
Код:
byte[] img = (byte[])SelUchastRes["FOTO"];
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 20.04.2018, 10:49   #3
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию

Пробовал - пишет невозможно привести System.String к System.Byte[]
Anton_Jag вне форума Ответить с цитированием
Старый 20.04.2018, 11:03   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Под залогируй строку, которая приходит из SelUchastRes["FOTO"].ToString() и выложи
сюда
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 20.04.2018, 11:06   #5
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию

Решил таким образом
Код:
                    byte[] img = Encoding.GetEncoding("windows-1251").GetBytes(SelUchastRes["FOTO"].ToString());
Anton_Jag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузить изображение из БД в PictureBox C# SeregaVili Помощь студентам 2 16.11.2015 00:59
Как загрузить картинку в PictureBox lialia Общие вопросы .NET 2 06.05.2014 11:47
Как загрузить картинку ser70 Общие вопросы C/C++ 6 02.09.2013 12:32
Загрузить картинку в PictureBox Wolf-alone C# (си шарп) 3 25.03.2012 03:47
Как загрузить картинку? Editor Работа с сетью в Delphi 11 15.07.2008 23:13