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

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

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

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

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

Добавление объекта в базу данных с использованием Linq
Доброго времени суток. public override void Add(UserEntity entity) { ...

Запись данных в базу данных SQL и выгрузка таблицы в форму
Нужно сделать 2 формы, одну с несколькими textBox'ами, чтобы при нажатии кнопки информация...

Запись данных в базу данных mdb с использованием DataAdapter и DataSet
Попробовал сделать Update для таблицы контактов: private void Form1_Load(object sender,...

Подключить базу данных MySQL
Не получается подключить базу данных (делаю проект в WindowsFormsApplication). Скачана библиотека...

Как ускорить запись данных в базу данных?
Добрый день. Есть следующий тестовый код: class MyClass { public int a; public int b;...

12
pincet
1382 / 966 / 130
Регистрация: 23.07.2010
Сообщений: 5,229
01.03.2012, 11:38 2
если я правильно понял вопрос - тебе нужна сериализация.
0
MDmitry_
82 / 50 / 14
Регистрация: 01.10.2010
Сообщений: 492
01.03.2012, 16:25  [ТС] 3
не в xml, в mysql
0
Петррр
6171 / 3472 / 898
Регистрация: 28.10.2010
Сообщений: 5,928
01.03.2012, 16:29 4
Сериализуете в массив байт, потом пишите в MySQL
1
_katon_
385 / 241 / 20
Регистрация: 03.10.2011
Сообщений: 1,003
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_
82 / 50 / 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_
385 / 241 / 20
Регистрация: 03.10.2011
Сообщений: 1,003
01.03.2012, 22:54 7
А что пытаешься делать? Как подключаешся к БД? Какой запрос выполняешь на вставку и т.д.
0
MDmitry_
82 / 50 / 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_
385 / 241 / 20
Регистрация: 03.10.2011
Сообщений: 1,003
02.03.2012, 12:37 9
Посмотри Вставка и извлечение изображений из БД. . Думаю этот пост поможет тебе разобраться как вставить бинарные данные в БД. Единственное, что автор описал только способ работы c ахсексом)) и MS SQL, но принципиально это ничего не меняет (сам работаю с MS поэтому с MySQL сильно не помогу). Кроме этого, то что там выполняется работа с рисунком не принципиально. Если будут проблемы пиши.
0
MDmitry_
82 / 50 / 14
Регистрация: 01.10.2010
Сообщений: 492
02.03.2012, 19:39  [ТС] 10
вроде так же делаю, только там изображения сразу создаётся из потока с помощью
C#
1
Image.FromStream
0
Петррр
6171 / 3472 / 898
Регистрация: 28.10.2010
Сообщений: 5,928
02.03.2012, 19:47 11
MDmitry_, и чё?
0
MDmitry_
82 / 50 / 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
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 1
03.02.2014, 18:26 13
Помогите разобраться с сохранением файла в базе данных SQL Server.
Как сериализовать файл я впринципе разобрался, не могу понять каким образом сохранить полученный массив в базе.
В качестве примера:
В базе две таблицы, в первой содержится некоторая информация о файле, во второй должен храниться сам файл и идентификатор для связи с первой таблицей.
Какой тип должно иметь поле "Файл" во второй таблице, чтобы в нем можно было сохранить сериализованный документ word страниц на 5-6.
0
03.02.2014, 18:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 18:26

Добавление записи в базу данных mysql
Всем привет. Мне нужно объединить 3 таблицы, я их объединила. Вот моя проблема у меня не получается...

Вставить файл в базу данных MySQL
Доброе время суток! Столкнулся с такой проблемой. Есть файлы которые нужно положить в базу данных...

Запись данных в базу
Нужно чтоб значения из техтбокса и комбобокса записывались в базу. С базами Access я никогда не...


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

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

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