Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/42: Рейтинг темы: голосов - 42, средняя оценка - 4.52
MDmitry_
84 / 52 / 14
Регистрация: 01.10.2010
Сообщений: 492
1

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

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

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

Если да, то как?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 04:59
Ответы с готовыми решениями:

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

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

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

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

12
pincet
1441 / 1016 / 140
Регистрация: 23.07.2010
Сообщений: 5,636
01.03.2012, 11:38 2
если я правильно понял вопрос - тебе нужна сериализация.
0
MDmitry_
84 / 52 / 14
Регистрация: 01.10.2010
Сообщений: 492
01.03.2012, 16:25  [ТС] 3
не в xml, в mysql
0
Петррр
6202 / 3503 / 899
Регистрация: 28.10.2010
Сообщений: 5,926
01.03.2012, 16:29 4
Сериализуете в массив байт, потом пишите в MySQL
1
_katon_
405 / 256 / 25
Регистрация: 03.10.2011
Сообщений: 1,050
01.03.2012, 16:57 5
Вот тут можно глянуть про сериализацию (видно, что ты не понимаешь о чем речь) http://msdn.microsoft.com/ru-ru/library/ms233843.aspx . А вообще тебе все правильно говорят только не поясняют как))

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

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

Поскольку объект потом еще надо и читать то вот тебе пример обратного действия - десериализация :
http://msdn.microsoft.com/ru-ru/library/ms172872.aspx
2
MDmitry_
84 / 52 / 14
Регистрация: 01.10.2010
Сообщений: 492
01.03.2012, 20:59  [ТС] 6
Цитата Сообщение от _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_
405 / 256 / 25
Регистрация: 03.10.2011
Сообщений: 1,050
01.03.2012, 22:54 7
А что пытаешься делать? Как подключаешся к БД? Какой запрос выполняешь на вставку и т.д.
0
MDmitry_
84 / 52 / 14
Регистрация: 01.10.2010
Сообщений: 492
02.03.2012, 07:01  [ТС] 8
к БД подключаюсь с помощью .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_
405 / 256 / 25
Регистрация: 03.10.2011
Сообщений: 1,050
02.03.2012, 12:37 9
Посмотри Вставка и извлечение изображений из БД. . Думаю этот пост поможет тебе разобраться как вставить бинарные данные в БД. Единственное, что автор описал только способ работы c ахсексом)) и MS SQL, но принципиально это ничего не меняет (сам работаю с MS поэтому с MySQL сильно не помогу). Кроме этого, то что там выполняется работа с рисунком не принципиально. Если будут проблемы пиши.
0
MDmitry_
84 / 52 / 14
Регистрация: 01.10.2010
Сообщений: 492
02.03.2012, 19:39  [ТС] 10
вроде так же делаю, только там изображения сразу создаётся из потока с помощью
C#
1
Image.FromStream
0
Петррр
6202 / 3503 / 899
Регистрация: 28.10.2010
Сообщений: 5,926
02.03.2012, 19:47 11
MDmitry_, и чё?
0
MDmitry_
84 / 52 / 14
Регистрация: 01.10.2010
Сообщений: 492
03.03.2012, 00:06  [ТС] 12
При таком коде

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 13
Помогите разобраться с сохранением файла в базе данных SQL Server.
Как сериализовать файл я впринципе разобрался, не могу понять каким образом сохранить полученный массив в базе.
В качестве примера:
В базе две таблицы, в первой содержится некоторая информация о файле, во второй должен храниться сам файл и идентификатор для связи с первой таблицей.
Какой тип должно иметь поле "Файл" во второй таблице, чтобы в нем можно было сохранить сериализованный документ word страниц на 5-6.
03.02.2014, 18:26
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 18:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.