Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Документ MS Office (Word или Excel) в БД, как оптимальнее хранить? 
:(
    Опции темы
MasterOfCode
Дата 5.9.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Внимательней:
не
insertCommand.Parameters.Add("@Context",SqlDbType.Image, Context.Length);
а,
insertCommand.Parameters.Add("@Context",SqlDbType.Image, Context.Length).Value = Context;


--------------------
user posted image
PM ICQ   Вверх
RedButterfly
Дата 5.9.2008, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



Урра добавляет)))

вот:
Код

insertCommand.Parameters.Add("@Context",SqlDbType.Image, Context.Length).Value = Context;


smile

однако ошибка все-равно выскакивает...

сейчас буду разбираться...

я почему-то думаю, что ругается вот так потому что программа (датагридвью) не может показать эти данные...

Это сообщение отредактировал(а) RedButterfly - 5.9.2008, 09:41

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  ______.JPG 51,81 Kb
PM MAIL ICQ Skype   Вверх
RedButterfly
Дата 5.9.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



догадки оказались верными smile

итак: добавление документа Ворд (Эксель думаю наподобие будет)

выглядит так:

Код

if(openFileDialog.ShowDialog()==DialogResult.OK) // Если выбрали файл и нажали ОК
            {

                Word.ApplicationClass wordApp = new Word.ApplicationClass();

               string pathFile = openFileDialog.FileName;      // В строку записали полный путь к файлу.

                Word.Document doc = wordApp.Documents.Add(ref empty, ref empty, ref empty, ref empty);

               doc.Select();
                
                byte[] data = GetData(pathFile);       // Делаем из документа байты.

               Job_BD(data);
            }            
    }

       
Код

        public void Job_BD(byte[] dat)       // Функция для того чтобы положить файл в базу данных.
        {
            try
            {
                using (SqlConnection sqlConnection = new SqlConnection("Data Source=op-093;Initial Catalog=Proektik;Integrated Security=True"))
                {
                    byte[] Context = dat ;

                   SqlCommand insertCommand = new SqlCommand("INSERT INTO TableProekt (Context) VALUES (@Context)", sqlConnection);

                    insertCommand.Parameters.Add("@Context",SqlDbType.Image, Context.Length).Value = Context;
                    sqlDataAdapter.InsertCommand = insertCommand;
                    sqlConnection.Open();
                    insertCommand.ExecuteNonQuery();
                    sqlDataAdapter.Update(dataSet, "TableProekt");

                    dataSet.AcceptChanges();         // Принимаем изменения.

                    sqlConnection.Close();
                }
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message);
                throw ex;        // Обработка универсальных исключений…   
            }
                    
        }


PM MAIL ICQ Skype   Вверх
RedButterfly
Дата 5.9.2008, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



Делаю считывание из базы данных в документ Word smile
PM MAIL ICQ Skype   Вверх
RedButterfly
Дата 5.9.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



Странно однако.
Взяла пример считывания BLOB-поля  из базы данных из MSDN.

Вставила в свой код smile

и не работает.

Код


        private void PressButton_Click(object sender, System.EventArgs e)
        {
            Word.ApplicationClass wordApp = new Word.ApplicationClass();
            Word.Document targetDoc = wordApp.Documents.Add(ref empty, ref empty, ref empty, ref empty);
               string Number = textBox.Text;
            
            byte[] byte_from_BD;
            try
            {
                using (SqlConnection sqlConnection = new SqlConnection("Data Source=op-093;Initial Catalog=Proektik;Integrated Security=True"))
            {
                sqlConnection.Open();
                SqlCommand selectCommand = new SqlCommand("SELECT  Context FROM TableProekt WHERE Num=1);", sqlConnection);
                  SqlDataReader dataReader = selectCommand.ExecuteReader(CommandBehavior.SequentialAccess);
                    
                    FileStream fs;                          // Writes the BLOB to a file (*.bmp).
                  binaryWriter bw;                        // Streams the BLOB to the FileStream object.
                  int bufferSize = 100;                   // Size of the BLOB buffer.
                  byte[] outbyte = new byte[bufferSize];  // The BLOB byte[] buffer to be filled by GetBytes.
                  long retval;                            // The bytes returned from GetBytes.
                  long startIndex = 0;                    // The starting position in the BLOB output.
                  string emp_id = "";                     // The employee id to use in the file name.

                  while (dataReader.Read())
                  {
                      // Get the employee id, which must occur before getting the employee.
                       emp_id = dataReader.GetString(0);

                      // Create a file to hold the output.
                      fs = new FileStream("C:\\"+emp_id + ".doc",FileMode.OpenOrCreate, FileAccess.Write);
                      bw = new BinaryWriter(fs);

                      // Reset the starting byte for the new BLOB.
                      startIndex = 0;

                      // Read the bytes into outbyte[] and retain the number of bytes returned.
                      retval = dataReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);

                      // Continue reading and writing while there are bytes beyond the size of the buffer.
                      while (retval == bufferSize)
                      {
                          bw.Write(outbyte);
                          bw.Flush();

                          // Reposition the start index to the end of the last buffer and fill the buffer.
                          startIndex += bufferSize;
                          retval = dataReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
                      }

                      // Write the remaining buffer.
                      bw.Write(outbyte, 0, (int)retval);


                      targetDoc.Select();

                      targetDoc.Application.Selection.Paste();        // Вставила в документ Ворд.

                      bw.Flush();

                      // Close the output file.
                      bw.Close();
                      fs.Close();
                  }

                  // Close the reader and the connection.
                  dataReader.Close();
                  sqlConnection.Close();
                }
            }
            catch(SqlException ex)
            {
                throw ex;        // Обработка универсальных исключений…   
            }


может у кого есть работающие примеры?
раз в MSDN немного не так написано...

Добавлено через 6 минут и 7 секунд
Пишет вот такую ошибку:

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  ______.JPG 14,74 Kb
PM MAIL ICQ Skype   Вверх
RedButterfly
Дата 5.9.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



вот так тоже не считывает
и пишет ошибки
Код

                  int chunkSize = 100;
                  dataReader.Read();
                  long bytesize = dataReader.GetBytes(0, 0, null, 0, 0);
                  byte dataCon = new byte[bytesize];  //    Cannot implicitly convert type 'byte[]' to 'byte'        
                  long bytesread = 0;
                  /*int*/ long curpos = 0;
                  while (bytesread < bytessize)  // The name 'bytessize' does not exist in the current context
                  {
                      bytesread += dataReader.GetBytes(0, curpos, dataCon, curpos, chunkSize);
//The best overloaded method match for 'System.Data.Common.DbDataReader.GetBytes(int, long, byte[], int, int)' has some invalid arguments    

// и ещё третий и четвертый параметры неверные....
                    curpos +=  chunkSize;
                  }


пример взят отсюда

ссылка

я уже не знаю :(
где же искать информацию если не в MSDN и не на сайтах, посвященных программированию?
PM MAIL ICQ Skype   Вверх
MasterOfCode
Дата 8.9.2008, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



byte[] dataCon = new byte[bytesize]; - Исправь!
bytesread += dataReader.GetBytes(0, curpos, dataCon, (int)curpos, chunkSize); - тут тоже!

Вы пробовали сами пытаться исправлять свои синтаксические ошибки? smile


Цитата(RedButterfly @  5.9.2008,  16:39 Найти цитируемый пост)
где же искать информацию если не в MSDN и не на сайтах, посвященных программированию? 


Если пример взяли и он не работает, 99,99% в том что он не работает - это вина ваша, а не тех кто опубликовал.


--------------------
user posted image
PM ICQ   Вверх
RedButterfly
Дата 8.9.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



Цитата(MasterOfCode @ 8.9.2008,  08:09)
byte[] dataCon = new byte[bytesize]; - Исправь!
bytesread += dataReader.GetBytes(0, curpos, dataCon, (int)curpos, chunkSize); - тут тоже!

Вы пробовали сами пытаться исправлять свои синтаксические ошибки? smile


Цитата(RedButterfly @  5.9.2008,  16:39 Найти цитируемый пост)
где же искать информацию если не в MSDN и не на сайтах, посвященных программированию? 


Если пример взяли и он не работает, 99,99% в том что он не работает - это вина ваша, а не тех кто опубликовал.

спасибо smile

вы правы.

скоро выложу что получилось на данном этапе...вдруг кому понадобится...

PM MAIL ICQ Skype   Вверх
RedButterfly
Дата 9.9.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



:(
Люди!
Люди!
Писала я писала значит....и тут объяснили таки , что писать нужно с использованием ООП...

ООП это хорошо конечно. Но неужели так важно?

Итого: три класса (никак не связанных с винформс) должны работать с формой...

что-то потерялась я...

неужели эту прогу нужно именно с использованием ООП писать?


PM MAIL ICQ Skype   Вверх
MasterOfCode
Дата 9.9.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Цитата(RedButterfly @  9.9.2008,  12:12 Найти цитируемый пост)
неужели эту прогу нужно именно с использованием ООП писать?

Что вы понимаете под ООП?


--------------------
user posted image
PM ICQ   Вверх
RedButterfly
Дата 9.9.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



Цитата(MasterOfCode @ 9.9.2008,  10:39)
Цитата(RedButterfly @  9.9.2008,  12:12 Найти цитируемый пост)
неужели эту прогу нужно именно с использованием ООП писать?

Что вы понимаете под ООП?

три класса со всякими переменными, свойствами, функциями...и каждая работает с формой...и управляют формой..и вызывают друг друга...
PM MAIL ICQ Skype   Вверх
MasterOfCode
Дата 9.9.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Так и есть, реализовывать желательно все через классы. Это дает несравнимые преимущества с обычным программированием в лоб.


--------------------
user posted image
PM ICQ   Вверх
RedButterfly
Дата 9.9.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



Цитата(MasterOfCode @ 9.9.2008,  12:37)
Так и есть, реализовывать желательно все через классы. Это дает несравнимые преимущества с обычным программированием в лоб.

тоже самое сказали... smile
...
может уже тогда опаздавший вопрос задам: 
что и где прочитать по ООП + С#?

простите конечно за навязчивость...
PM MAIL ICQ Skype   Вверх
MasterOfCode
Дата 9.9.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27





--------------------
user posted image
PM ICQ   Вверх
RedButterfly
Дата 9.9.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Учусь
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 4.7.2005
Где: Уфа->Москва

Репутация: нет
Всего: нет



спасибо))
я скоро ...
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1304 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.