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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранить файл в базе SQL на C# 
:(
    Опции темы
tatbesidovska
  Дата 3.2.2011, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.4.2008

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



Добрый день! Может кто знает,как сделать. 
 
Нужно реализовать такую беду: Есть GridView, GridControl Devexpress овский, при нажатии на ячейку, открывается диалоговое окно с выбором файла, выбираем файл, предположим .xls (пользователь может выбрать может любой файл любого типа), закрывается окно, файл сохраняется в базу данных SQL. После пользователь может просмотреть этот файл с помощью нажатия на ячейку.Подскажите что-нить, и еще, в базе для этого поля тип данных какой должен быть? Спасибо
PM MAIL   Вверх
Gluttton
Дата 3.2.2011, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

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



tatbesidovska, какая СУБД?

В общем случае тип данных: BLOB.
Чтение и запись данных может производиться через поток с представление данных как массива бит.


--------------------
Слава Україні!
PM MAIL   Вверх
A5uKa
  Дата 3.2.2011, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Цитата

После пользователь может просмотреть этот файл с помощью нажатия на ячейку

Где просматривать ? В гриде ? Тогда вам надо ограничится с числом поддерживаемых форматов и каждый обрабатывать по разному.
PM   Вверх
tatbesidovska
Дата 3.2.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.4.2008

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



Цитата(A5uKa @  3.2.2011,  14:53 Найти цитируемый пост)
Где просматривать ? В гриде ? Тогда вам надо ограничится с числом поддерживаемых форматов и каждый обрабатывать по разному.

нет, просмастривать в гриде не надо, открытие можно реализовать запуском файла ассоциированным приложением. Может у кого есть пример именно сохранения файла в базе

PM MAIL   Вверх
jonie
Дата 3.2.2011, 17:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата(Gluttton @  3.2.2011,  13:46 Найти цитируемый пост)
tatbesidovska, какая СУБД?

Вы этот вопрос зря игнорируете.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
tatbesidovska
Дата 3.2.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.4.2008

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



Цитата(jonie @  3.2.2011,  17:22 Найти цитируемый пост)
tatbesidovska, какая СУБД?Вы этот вопрос зря игнорируете.

MS SQL Server
PM MAIL   Вверх
jonie
Дата 3.2.2011, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Код

create table sometab(
 sflen int,
 sf varbinary(max)
)
GO


и далее как-то так:
Код

byte[] fileBuffer = ....;
SqlConnection conn = ....;

string q = @"INSERT INTO sometab(sflen, sf) VALUES(@sflen, @sf)";
SqlCommand cmd= new SqlCommand(q, conn);
SqlParameter binaryParam = new SqlParameter("@sf", SqlDbType.VarBinary, fileBuffer.Length);
binaryParamValue = fileBuffer;

cmd.Parameters.AddWithValue("@sflen", fileBuffer.Length);
cmd.Parameters.Add(binaryParam);
cmd.ExecuteNonQuery();


Это сообщение отредактировал(а) jonie - 3.2.2011, 22:07


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
tatbesidovska
Дата 4.2.2011, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.4.2008

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



а просмотреть файл, при нажатии на ячейку в gridView?
PM MAIL   Вверх
A5uKa
  Дата 4.2.2011, 09:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



OnCellClick, потом файл из базы в поток, потом в файл, потом в темп куда-нибудь, потом ShellExecute
PM   Вверх
tatbesidovska
Дата 4.2.2011, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.4.2008

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



может у кого пример есть?
PM MAIL   Вверх
tatbesidovska
  Дата 4.2.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.4.2008

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



Нашла вот это, но здесь пример для открытия картинки по ID, какой пропишешь в SELECT, та картинка и будет открываться. 
Код

SqlConnection myConnection = new SqlConnection(@"Data Source=ODIN;Initial Catalog=BDOC;User ID=sa;Password=123");
                        String selectCmd = "SELECT * FROM foto WHERE id_image=175";
                        SqlCommand myCommand = new SqlCommand(selectCmd, myConnection);
                        myConnection.Open();
                        SqlDataReader datareader = myCommand.ExecuteReader();
                        datareader.Read();
                        int bLength = (int)datareader.GetBytes(1, 0, null, 0, int.MaxValue);
                        byte[] bBuffer = new byte[bLength];
                        datareader.GetBytes(1, 0, bBuffer, 0, bLength);
                        myConnection.Dispose();
                        MemoryStream mStream = new MemoryStream(bBuffer);
                        Bitmap bmp = new Bitmap(mStream);
                        imageEdit1.Image = bmp;


А как сделать так, чтобы при нажатии на ячейку в gridView открывался тот файл, который закреплен в базе данных за этой ячейкой
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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