Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.12.2022
Сообщений: 236

Добавление фотографии в таблицу Access при помощи Windows Forms

07.08.2023, 16:24. Показов 1163. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, здравствуйте, пытаюсь реализовать добавление фотографии пользователя в таблицу Access. Он то добавляет фотографию, но в таблице выводится не фотография, а какая-то надпись. Я прикреплю ниже скриншот. Не знаю что делать. Объясните, пожалуйста, может я что-то делаю не так или это можно как-то поправить?
Вот код:
C#
1
2
3
4
5
6
7
using(OpenFileDialog ofd = new OpenFileDialog() { Filter = "JPEG|*jpg", ValidateNames = true, Multiselect = false })
            {
                if(ofd.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = Image.FromFile(ofd.FileName);
                }
            }
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.08.2023, 16:24
Ответы с готовыми решениями:

Добавление записи в таблицу Access при использовании Windows Forms
Доброго времени суток программисты! Возникла такая проблема, не идёт добавление записи в таблицу ИмяПокупателя. Многое перепробовал, но...

Как в VS 2010 осуществить подключение к SolidWorks при помощи Windows Forms?
Всем день добрый. Хочу задать вопрос, как в VS 2010 осуществить подключение к SolidWorks при помощи Windows Forms? Я создал обработчик...

Сжать файлы бд access из windows при помощи скриптов
Можно ли сжать файлы access при помощи wsh или wmi?

31
Эксперт .NET
 Аватар для Usaga
14724 / 9494 / 1362
Регистрация: 21.01.2016
Сообщений: 35,790
07.08.2023, 17:17
Студворк — интернет-сервис помощи студентам
Egorich2004, блин, ты код покажи как есть. Не надо этих кусков. Оно делу не помогает.
0
0 / 0 / 0
Регистрация: 03.12.2022
Сообщений: 236
07.08.2023, 17:22  [ТС]
Вот, код весь:
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
 private void btnAddPhoto_Click(object sender, EventArgs e)
        {
            using(OpenFileDialog ofd = new OpenFileDialog() { Filter = "JPEG|*jpg", ValidateNames = true, Multiselect = false })
            {
                string path = ofd.FileName;
                if(ofd.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = new Bitmap(ofd.FileName);
                }
                string connectionString = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"C:\\Users\\egort\\OneDrive\\Документы\\Database.mdb\"";//строка соединения
                OleDbConnection dbConnection = new OleDbConnection(connectionString);//создаем соединение
 
                //Выполняем запрос к базе данных
                dbConnection.Open();//открываем соединение
                string query = "INSERT INTO table_info VALUES('" + path + "')";
                OleDbCommand dbCommand = new OleDbCommand(query, dbConnection);//команда
                dbCommand.ExecuteNonQuery();
                dbConnection.Close();
            }
        }
 
        private void btnAdd_Click(object sender, EventArgs e)
        {
            string connectionString = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"C:\\Users\\egort\\OneDrive\\Документы\\Database.mdb\"";//строка соединения
            OleDbConnection dbConnection = new OleDbConnection(connectionString);//создаем соединение
 
            //Выполняем запрос к базе данных
            dbConnection.Open();//открываем соединение
            string query = "INSERT INTO table_info VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "', '" + textBox3.Text + "', '" + textBox4.Text + "', '" + textBox5.Text + "', '" + textBox6.Text + "', '" + textBox7.Text + "', '" + textBox8.Text + "', '" + pictureBox1.Image + "')";//строка запроса (выбираем из table_info)
            OleDbCommand dbCommand = new OleDbCommand(query, dbConnection);//команда
            if (dbCommand.ExecuteNonQuery() != 1)
                MessageBox.Show("Ошибка выполнения запроса!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
                MessageBox.Show("Данные о пользователе добавлены!", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
            dbConnection.Close();
        }
Он все добавляет, работает. Вторая кнопка так точно, но добавляю одно поле и выводит ошибку. Мол не все данные введены. А у меня за все данные не одна кнопка отвечает, а сразу две. Я пытаюсь вот придумать выход

Добавлено через 4 минуты
Я вот думаю, а если в одной кнопке сразу добавлять фото, а потом загружать все данные в таблицу? Код же выполняется постепенно. Сначала сделать выбор изображения, а потом после этого сразу загрузку всех данных
0
Эксперт .NET
 Аватар для Usaga
14724 / 9494 / 1362
Регистрация: 21.01.2016
Сообщений: 35,790
07.08.2023, 17:25
Лучший ответ Сообщение было отмечено Egorich2004 как решение

Решение

Цитата Сообщение от Egorich2004 Посмотреть сообщение
', '" + pictureBox1.Image + "')"
Вот здесь лажа. Будет не изображение сохраняться, а строка вида System.Drawing.Bitmap. Кто тебя учил так делать? Нужно использовать параметрические запросы.

Цитата Сообщение от Egorich2004 Посмотреть сообщение
string query = "INSERT INTO table_info VALUES('" + path + "')";
И что? В Access это будет работать? Правильный вариант подобного:
SQL
1
INSERT INTO таблица (список полей) VALUES (список параметров)
А у тебя что? Как Access должен понять в какое поле таблицы надо этот Path вставлять?
1
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,690
Записей в блоге: 4
07.08.2023, 17:28
Лучший ответ Сообщение было отмечено Egorich2004 как решение

Решение

Цитата Сообщение от Egorich2004 Посмотреть сообщение
C#
1
string query = "INSERT INTO table_info VALUES('" + path + "')"
А ничего что тут создаётся новая запись, со всеми пустыми полями кроме какой-то path...
INSERT по правильному пишется вот так
SQL
1
2
INSERT INTO MyTable (Field01, Field02, .., FieldXX)
VALUES (1, 'SomeText', .., 'SomeTextXX');
Добавлено через 2 минуты
Usaga, Апаздал
1
0 / 0 / 0
Регистрация: 03.12.2022
Сообщений: 236
07.08.2023, 17:31  [ТС]
Мне в данную запись нужно добавить номер колонки, в которую я хочу добавить данные, так?

Добавлено через 1 минуту
Вот так?
C#
1
string query = "INSERT INTO table_info (Изображение) VALUES('" + path + "')";
0
Эксперт .NET
 Аватар для Usaga
14724 / 9494 / 1362
Регистрация: 21.01.2016
Сообщений: 35,790
07.08.2023, 17:33
Egorich2004, тебе в данную запись нужно добавить ИМЯ колонки, чтобы Access понимал, куда определить параметр в Values.

Добавлено через 1 минуту
Egorich2004, посмотри FAQ по работе с ADO.NET. Не надо гадать. А ещё, было бы не плохо почитать чего по SQL.
0
0 / 0 / 0
Регистрация: 03.12.2022
Сообщений: 236
07.08.2023, 17:35  [ТС]
Хорошо, спасибо вам. А если мне необходимо передать больше одной колонки, мне их через запятую указывать?
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,690
Записей в блоге: 4
07.08.2023, 17:36
Цитата Сообщение от Egorich2004 Посмотреть сообщение
мне их через запятую указывать?
Я для кого это написал?
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
SQL
1
2
INSERT INTO MyTable (Field01, Field02, .., FieldXX)
VALUES (1, 'SomeText', .., 'SomeTextXX');
0
Эксперт .NET
 Аватар для Usaga
14724 / 9494 / 1362
Регистрация: 21.01.2016
Сообщений: 35,790
07.08.2023, 17:37
Цитата Сообщение от Egorich2004 Посмотреть сообщение
А если мне необходимо передать больше одной колонки, мне их через запятую указывать?
Почитай учебник по SQL. Это быстрее, чем гадать и форум мучить)
0
0 / 0 / 0
Регистрация: 03.12.2022
Сообщений: 236
07.08.2023, 17:37  [ТС]
Простите, спасибо
0
Эксперт .NET
 Аватар для Usaga
14724 / 9494 / 1362
Регистрация: 21.01.2016
Сообщений: 35,790
07.08.2023, 17:37
Egorich2004, нечего извиняться)
0
0 / 0 / 0
Регистрация: 03.12.2022
Сообщений: 236
07.08.2023, 17:39  [ТС]
Спасибо вам всем за помощь, ребята
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.08.2023, 17:39

Реализовать добавление данных пользователем при помощи комбинации клавиш ctrl+c, ctrl+v в таблицу
Добрый день! Подскажите, как можно реализовать добавление данных пользователем при помощи комбинации клавиш ctrl+c, ctrl+v в таблицу. ...

Добавление в таблицу ячейки в Word при экспорте из Access
Нужна помощь, если вдруг кто сталкивался с таким, ниже кусочек кода (цикла) приложу. Смысл в чем, попытаюсь объяснить, - есть...

Прошу помощи в переносе алгоритма в Windows Forms
using System; class Algorithm { static void Main() { Search(); OnPaint(); Console.ReadKey(); ...

Загрузка из Access в таблицу ASP Forms
Добрый день. Разрабатываю на ASP Forms, framework 4. Написал такой код: <!DOCTYPE html> <html lang="en"> ...

Windows Forms и Access
Есть задание, где нужно соеденить БД с виндовс формой. И чтоб через виндовс форму добавлять и редактировать в БД.


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru