Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/67: Рейтинг темы: голосов - 67, средняя оценка - 4.67
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492

Запись объекта в базу данных MySQL

01.03.2012, 04:59. Показов 13006. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли как-нибудь записать в базу данных MySQL объект, а потом его восстановить с помощью приведения типа например?

Если да, то как?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.03.2012, 04:59
Ответы с готовыми решениями:

Запись в базу данных MYSQL
Здравствуйте проблема возникла в том что при записи в таблицу то там вместо текста появляется пустая ячейка , хотя уже перевел QString в...

Запись в Базу данных MySQL
<html> <head> <title>Формы PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ...

Где ошибка? (Запись данных из массива в базу данных mysql)
Массив, генерирующий данные: $data = array(); for($i = 0; $i < 100; $i++){ $data = array( 'name' ...

12
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.03.2012, 11:38
если я правильно понял вопрос - тебе нужна сериализация.
0
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
01.03.2012, 16:25  [ТС]
не в xml, в mysql
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
01.03.2012, 16:29
Сериализуете в массив байт, потом пишите в MySQL
1
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
01.03.2012, 16:57
Вот тут можно глянуть про сериализацию (видно, что ты не понимаешь о чем речь) http://msdn.microsoft.com/ru-r... 33843.aspx . А вообще тебе все правильно говорят только не поясняют как))

Поэтому как провести сериализацию прочитай здесь: http://msdn.microsoft.com/ru-r... 72873.aspx

Как сохранить в БД результат сериализации думаю сам разберешся...

Поскольку объект потом еще надо и читать то вот тебе пример обратного действия - десериализация :
http://msdn.microsoft.com/ru-r... 72872.aspx
2
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
01.03.2012, 20:59  [ТС]
Цитата Сообщение от _katon_ Посмотреть сообщение
Как сохранить в БД результат сериализации думаю сам разберешся..
не получилось

Нужно преобразовать объект в поток байтов Stream (использовал MemoryStream), а потом его записать в BLOB-поле, я правильно понял?

Сериализация
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            // Сериализовать дерево
            MemoryStream streamBytes = new MemoryStream();
            BinaryFormatter serializer = new BinaryFormatter();
            TreeNode treeNode = trvTree.Nodes[0];
 
            try
            {
                serializer.Serialize(streamBytes, treeNode);
            }
            catch (SerializationException ex)
            {
                MessageBox.Show(errorMessage + "Невозможно сериализовать объект. Объект не помечен, как сериализуемый. "
                    + ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(errorMessage + "Невозможно сериализовать объект. " + ex.Message);
            }
Десериализация
C#
1
2
3
4
5
6
7
8
9
            // Десериализовать дерево
            Stream testFileStream = File.OpenRead("tree.bin");
            BinaryFormatter deserializer = new BinaryFormatter();
            TreeNode treeNode = null;
            try
            {
                treeNode = (TreeNode)deserializer.Deserialize(testFileStream);
            }
...
Как записать в БД mysql? Пример не смог найти
0
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
01.03.2012, 22:54
А что пытаешься делать? Как подключаешся к БД? Какой запрос выполняешь на вставку и т.д.
0
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
02.03.2012, 07:01  [ТС]
к БД подключаюсь с помощью .NET Connector
Чтобы вставить значение в БД достаточно запроса

C#
1
2
3
4
5
string str="Огород";
int num=2;
 
mysql_command.CommandText="INSERT INTO MyTable VALUES("+num+",'"+str+"')";
// Выполнение запроса
В результате получается такая строка: INSERT INTO MyTable VALUES(2,'Огород'). А в случае объекта как сделать мысли были см. пост 6, а как осуществить - не знаю

Добавлено через 7 часов 59 минут
пробовал делать так:

Запись
C#
1
2
3
4
5
// В stream сериализованный объект
byte[] array = stream.ToArray();
mysql_query.CommandText = "INSERT INTO " + table + " VALUES(NULL,'" +
                    nameAttribute + "','" + array + "')";
// Запись в БД
Чтение
C#
1
2
3
4
5
6
7
8
9
10
MySqlCommand mysql_query = new MySqlCommand("", mysql_connection);
MemoryStream streamBytes = new MemoryStream();
...
object value = mysql_result.GetValue(0);
byte[] array = (byte[])value;
streamBytes.Write(array, 0, array.Length);
...
BinaryFormatter deserializer = new BinaryFormatter();
 
treeNode = (TreeNode)deserializer.Deserialize(streamBytes);
Не получилось. Выдаёт Объект, не помечен, как сериализуемый. Конец потока обнаруен до завершения разбора. На десереализации
0
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
02.03.2012, 12:37
Посмотри https://www.cyberforum.ru/ado-... 26692.html . Думаю этот пост поможет тебе разобраться как вставить бинарные данные в БД. Единственное, что автор описал только способ работы c ахсексом)) и MS SQL, но принципиально это ничего не меняет (сам работаю с MS поэтому с MySQL сильно не помогу). Кроме этого, то что там выполняется работа с рисунком не принципиально. Если будут проблемы пиши.
0
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
02.03.2012, 19:39  [ТС]
вроде так же делаю, только там изображения сразу создаётся из потока с помощью
C#
1
Image.FromStream
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
02.03.2012, 19:47
MDmitry_, и чё?
0
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
03.03.2012, 00:06  [ТС]
При таком коде

C#
1
2
3
// В tree.bin содержится сериализованный объект
FileStream TestFileStream = new FileStream("tree.bin", FileMode.Open);
treeNode = (TreeNode)deserializer.Deserialize(TestFileStream);
Всё работает отлично

Добавлено через 3 минуты
При записи

C#
1
2
3
4
5
// В stream содержится результат сериализации объекта
FileStream TestFileStream = new FileStream("tree.bin",FileMode.Create);
            byte[] array2 = stream.ToArray();
            TestFileStream.Write(array2, 0, array2.Length);
            TestFileStream.Close();
Если по такому преобразованию объект - сериализация (в Stream) - массив байтов - двоичный файл
Пишет - читает нормально

Добавлено через 5 минут
Если преобразования после чтения изменить, как из базы данных

Двоичный файл (запись BLOB в БД) - массив байтов (byte[]) - stream - десереализация, то ошибка такая же, как в Объект, не помечен, как сериализуемый. Конец потока обнаруен до завершения разбора.

Проблема где-то здесь по ходу.

Код, который использовал для эмулирования цепочки преобразлваний
C#
1
2
3
4
5
6
7
8
9
10
FileStream TestFileStream = new FileStream("tree.bin", FileMode.Open);
            byte[] array2 = new byte[TestFileStream.Length];
            TestFileStream.Read(array2, 0, array2.Length);
 
            MemoryStream stream2 = new MemoryStream();
            stream2.Write(array2, 0, array2.Length);
            try
            {
                treeNode = (TreeNode)deserializer.Deserialize(stream2);
            }
0
VS482DvorT
03.02.2014, 18:26
Помогите разобраться с сохранением файла в базе данных SQL Server.
Как сериализовать файл я впринципе разобрался, не могу понять каким образом сохранить полученный массив в базе.
В качестве примера:
В базе две таблицы, в первой содержится некоторая информация о файле, во второй должен храниться сам файл и идентификатор для связи с первой таблицей.
Какой тип должно иметь поле "Файл" во второй таблице, чтобы в нем можно было сохранить сериализованный документ word страниц на 5-6.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.02.2014, 18:26
Помогаю со студенческими работами здесь

Python запись в базу данных Mysql
Привет всем. Помогите дописать код. T3: Внизу код, он работает так, пишет лог в базу. Но суть в том что он записывает все...

[PHP+MySQL] Запись в базу данных из формы
Здравствуйте! Помогите, пожалуйста, решить проблему с записью. В базу строка добавляется, но она пустая. Не могу понять, в чем дело. ...

Запись в базу данных mysql веб приложением
Пытаюсь научится php. Памагите Задача заключается в создании веб-страницы с 2 полями и кнопкой. Табличка состоит из столбцов - Имя,...

Запись значения в базу данных, PHP + MySQL
Здравствуйте. Система управления NetCat. Делаю каталог участников выставки. Пока идут плавающие номера (вывожу их через php -...

QT Запись ячейки из qtableview в базу данных mysql
Суть в том, что при выборе строки в поле "Продукция" и нажатии на кнопку "Изготовить" нужно считать ячейку с наименованием из строки и...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru