Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
 Аватар для aleksskay4
71 / 68 / 46
Регистрация: 02.12.2015
Сообщений: 891
Записей в блоге: 1

Добавление и отображение изображения из базы данных

12.09.2016, 21:41. Показов 2926. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
так добавляю

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  public void AddPhoto(string userLogin, string fileName)
        {
            SqlCommand com = new SqlCommand();
            com.Connection = connection;
            com.CommandType = CommandType.StoredProcedure;
            com.CommandText = "INS_Logins";
            com.Parameters.AddWithValue("@UserLogin", userLogin);
            Image image = Image.FromFile(fileName);
            MemoryStream memStream = new MemoryStream();
            image.Save(memStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            
            SqlParameter param = new SqlParameter("@Photo", SqlDbType.VarBinary);
            param.Value = memStream.ToArray();
            com.Parameters.Add(param);
            com.ExecuteNonQuery();
            
        }

так отображаю
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void ShowPhoto(PictureBox pictureBox, string userLogin)
        {
            SqlCommand com = new SqlCommand();
            com.Connection = connection;
            com.CommandType = CommandType.Text;
            com.CommandText = "Select LichPhoto from Logins where UserLogin = @UserLogin";
            com.Parameters.AddWithValue("@UserLogin", userLogin);
            SqlDataReader reader = com.ExecuteReader();
            if (reader.HasRows)
            {
                reader.Read();
                MemoryStream memStream = new MemoryStream();
                memStream.Write((byte[])reader["LichPhoto"], 0,
                    ((byte[])reader["LichPhoto"]).Length);
                Image image = Image.FromStream(memStream);// здесь выскакивает сообщение "Недопустимый параметр"
                pictureBox.Image = image;
            }
Что не так
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2016, 21:41
Ответы с готовыми решениями:

Базы данных. Добавление полей. Выборочное отображение таблиц
Здравствуйте Дорогие Форумчане! За то время, что я читаю этот форум я узнала больше чем за 3 года обучения в колледже. Однако в...

Отображение изображения по пути из базы
В поле таблицы написано <img src="~/Content/images/FirstProgramm.JPG" /> в представлении так: <div class="article" > ...

Постолбцовое отображение данных из базы данных SQLite
Уважаемые форумчане, помогите пожалуйста. Необходимо вывести данные из таблицы базы данных в TextView. Вот код, когда в TextView...

5
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
13.09.2016, 07:44
Цитата Сообщение от aleksskay4 Посмотреть сообщение
Что не так
aleksskay4, посмотрите прикрепленный проект. Возьмите оттуда тот участок, что вам нужен.
Вложения
Тип файла: rar ImageBase.rar (771.2 Кб, 61 просмотров)
1
 Аватар для aleksskay4
71 / 68 / 46
Регистрация: 02.12.2015
Сообщений: 891
Записей в блоге: 1
13.09.2016, 08:24  [ТС]
insite2012, этот проект на моем компе тоже не показывает изображении при нажатии кнопки "Показать".
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
13.09.2016, 08:29
Цитата Сообщение от aleksskay4 Посмотреть сообщение
этот проект на моем компе тоже не показывает изображении при нажатии кнопки "Показать".
Там используется тип БД SQLite, по всей видимости, у вас в системе не стоят нужные пакеты. Можете скачать и установить их отсюда, по разрядности своей ОС и под свою версию NET.
0
 Аватар для aleksskay4
71 / 68 / 46
Регистрация: 02.12.2015
Сообщений: 891
Записей в блоге: 1
13.09.2016, 19:45  [ТС]
Из-за чего может выдавать сообщение "Недопустимый параметр" ?
Поле к которому обращаюсь в базе имеет тип image.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void ShowPhoto(PictureBox pictureBox, string userLogin)
        {
            SqlCommand com = new SqlCommand();
            com.Connection = connection;
            com.CommandType = CommandType.Text;
            com.CommandText = "Select LichPhoto from Logins where UserLogin = @UserLogin";
            com.Parameters.AddWithValue("@UserLogin", userLogin);
            SqlDataReader reader = com.ExecuteReader();
            if (reader.HasRows)
            {
                reader.Read();
                MemoryStream memStream = new MemoryStream();
                memStream.Write((byte[])reader["LichPhoto"], 0,
                    ((byte[])reader["LichPhoto"]).Length);
                Image image = Image.FromStream(memStream);// здесь выскакивает сообщение
                                                                                    // "Недопустимый параметр"
                pictureBox.Image = image;
            }
Добавлено через 7 часов 49 минут
Я кажется полный путь передавал и поэтому наверно была ошибка. Решил проблему.
0
2 / 2 / 0
Регистрация: 16.05.2016
Сообщений: 51
13.09.2016, 23:39
Ну раз вопрос решён, задам свой, чтобы не создавать тем. Может этот вопрос добавят в закреплённую тему..
Интересует способ добавления, отображения, удаления изображения из БД MS SQL с помощью Entity, в WPF с паттерном MVVM.
Лично я сделал так и это работает, но все мы учимся, поэтому можете написать любые замечания/предложения по этому вопросу?
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<UserControl x:Class="Tests.AdminPanelW.ImagesEditor"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Tests.AdminPanelW"
             mc:Ignorable="d" Width="650" Height="370">
    <Grid Background="#FFEBE9ED">
        <ListBox HorizontalAlignment="Left" SelectedValue="{Binding SelectedImage}" ItemsSource="{Binding images}" Margin="10,10,0,10" Width="147">
        </ListBox>
        <Image Margin="162,35,10,10" Source="{Binding image}"/>
        <Button Content="Добавить" Command="{Binding AddImage}" Margin="162,10,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="220"/>
        <Button Content="Удалить" Command="{Binding DeleteImage}" HorizontalAlignment="Left" Margin="387,10,0,0" VerticalAlignment="Top" Width="252"/>
    </Grid>
</UserControl>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using Microsoft.Win32;
using System.Collections.ObjectModel;
using System.Drawing;
using System.IO;
using System.Linq;
using Tests.Model;
 
namespace Tests.AdminPanelW
{
    class ImagesEditorViewModel : BaseViewModel
    {
        public ObservableCollection<long> images { get; set; }
        private long selectedImage { get; set; }
        public ActionCommand AddImage { get; set; }
        public ActionCommand DeleteImage { get; set; }
        public byte[] image { get; set; }
 
        public long SelectedImage
        {
            get { return selectedImage; }
            set
            {
                selectedImage = value;
                if (value != -1)
                {
                    image = entities.Images.FirstOrDefault(x => x.ID == value).Image;
                }
                else
                {
                    image = null;
                }
                OnPropertyChanged("image");
            }
        }
 
        public ImagesEditorViewModel()
        {
            images = new ObservableCollection<long>(entities.Images.Select(x => x.ID));
            AddImage = new ActionCommand(Add) { IsExecutable = true };
            DeleteImage = new ActionCommand(Delete) { IsExecutable = true };
        }
 
        private void Add()
        {
            OpenFileDialog dialog = new OpenFileDialog();
            if (dialog.ShowDialog().Value)
            {
                Bitmap bmp = new Bitmap(dialog.FileName);
                using (MemoryStream ms = new MemoryStream())
                {
                    bmp.Save(ms, bmp.RawFormat);
                    entities.Images.Add(new Images() { Image = ms.ToArray() });
                    entities.SaveChanges();
                }
                images.Add(entities.Images.Max(x => x.ID));
                SelectedImage = entities.Images.Max(x => x.ID);
            }
        }
 
        public void Delete()
        {
            if (SelectedImage != -1)
            {
                entities.Images.Remove(entities.Images.FirstOrDefault(x => x.ID == selectedImage));
                entities.SaveChanges();
                images.Remove(SelectedImage);
                if (images.Count > 0) SelectedImage = images.Max();
                else
                {
                    image = null;
                    OnPropertyChanged("image");
                }
            }
        }
    }
}
Конечно всякие диалоги в MVVM не приветствуются, но я пока не знаю, как вызвать OpenFileDialog не нарушая принципы MVVM.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.09.2016, 23:39
Помогаю со студенческими работами здесь

Отображение базы данных
Здравствуйте! ПОдскажите, какие варианты можно использовать для отоборажения базы данных. Допустим есть прайс. Таблица из дух колонок,...

Отображение базы данных
Здравствуйте сделал форму в C# и отобразил там базу данных аксес можно ли сделать так чтобы отображались не все строки, а те...

Добавление данных через форму в таблицу базы данных MS SQL
Здравствуйте! Я делаю форму для добавления записи в таблицу базы данных, созданную в MS SQL 2008. В таблице три поля...

Добавление записи в базу данных и считывание из базы данных
Здравствуйте! Знаю, что эти вопросы поднимались уже тысячи раз, но помогите пожалуйста. Написала код добавления записи в БД. Сколько...

Добавление базы данных и запросы в эту базу данных
Подскажите пожалуйста. При помощи каких компонентов в delphi можно добавить базу данных acces и какой код и как создать запросы в эту базу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru