Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Запись файла-картинки с БД с помощью ADO.NET  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 310
У меня проект ASP.NET (VS2010 VB) с двумя базами MS SQL Server 2008 и Access2000.
Мне нужно записать файл-картинку (сам файл, не имя) в заданное поле (типа Binary) таблицы Access. Как это можно сделать в ADO.NET?
В MSSQL понятно, через хранимую процедуру с параметрами и соответствующими объектами ADO.NET можно. А с Access-ом как?
Заранее спасибо.
8 сен 10, 22:46    [9407851]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1143
Игорь1973
В MSSQL понятно, через хранимую процедуру с параметрами и соответствующими объектами ADO.NET можно.

Та-а-ак... А мне вот не понятно, как в этот силлогизЬм вкорячена непреложная истина о хранимой процедуре?
Я помню лет 10 назад ни один собеседник, хоть слегка причастный к разработке, не мог считать себя удовлетворенным, пока 25 раз не употребит многозначительно слово "транзакция"...
9 сен 10, 00:13    [9408091]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 310
Вы на что намекаете, дорогой? Я не очень понимаю ваше смещение темы на транзакции.
Давайте рассмотрим простой пример обнолвения поля, без цепочки действий и не будем затрагивать транзакции.
Я сейчас в чем-то подтупливаю, ну, так вас не затруднит меня подправить? Так есть ли способ записать двоичные данные в Access объектами ADO.NET. Раньше, во времена ADO, это делалось записью бинарного массива в поле объекта ADO.Recordset-а, а теперь как? (Конечно, можно и com-объект ADO.Recordset создать, но не хотелось бы.)
9 сен 10, 11:44    [9409672]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 310
Нашел, что искал
http://support.microsoft.com/kb/316887/
9 сен 10, 11:52    [9409786]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1143
Игорь1973,

Я не понял связи с ХП в первом сообщении.
А по теме есть материалы и попроще:
9 сен 10, 11:58    [9409864]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Курдль
А по теме есть материалы и попроще:

Это относится к MS SQL Sever, а речь об аксе.

P.S. Тема - баян (как запихнуть бинар в БД). Поиск по форуму рулит.
9 сен 10, 12:02    [9409905]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 310
Курдль,

Я имел в виду, что MS SQL есть ХП, которые могут иметь параметры любых типов (в тч и Binary) и их выполнение можно вызвать через ADO.NET объекты (SqlConnection, SqlCommand, SqlTransaction...), записать Binary-массив в параметр и передать его ХП.
А вот в Access понятия ХП нет, и как быть тут? (с объектом OleDbCommand или др.)
В этом суть вопроса. А вот вы (наверное, как большущий фанатик MS SQL, и давно уже не признающий других СУБД), все ж таки дали ответ по нему, хотя вопрос на самом деле был про Access.
9 сен 10, 12:09    [9409965]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Игорь1973
А вот в Access понятия ХП нет, и как быть тут?

Вам говорят о том, - чё Вы привязались к этим ХП!

Про инструкцию INSERT INTO слыхали? Она что, обязана быть в контексте хранимой процедуры?
9 сен 10, 12:13    [9410014]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 310
Интересно, как в инструкциях INSERT INTO или UPDATE... указать данные для бинарного поля?
Понятно, что никак. Поэтому я сразу и завел разговор о ХП для данного сабжа.
9 сен 10, 12:35    [9410217]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
var builder = new OleDbConnectionStringBuilder
{
    Provider = "Microsoft.ACE.OLEDB.12.0",
    DataSource = "D:\\db.accdb",
};

using (var connection = new OleDbConnection(builder.ToString()))
using (var command = new OleDbCommand("INSERT INTO Images (Img) VALUES (?)", connection))
{
    var bytes = File.ReadAllBytes("D:\\File.pdf");
    command.Parameters.Add(
        new OleDbParameter("@Img", OleDbType.LongVarBinary, bytes.Length, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, bytes)
    );
    connection.Open();
    command.ExecuteNonQuery();
}
9 сен 10, 12:35    [9410222]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Игорь1973
Интересно, как в инструкциях INSERT INTO или UPDATE... указать данные для бинарного поля? Понятно, что никак.

Садитесь - двойка. Код - выше. Так же задача решается и для сиквела. И для оракла. И т.д.
9 сен 10, 12:37    [9410234]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Подстановка параметров ничем не отличается как для хранимой процедуры, так и для обычного статичного SQL запроса.
9 сен 10, 12:38    [9410248]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 310
Молодцы! Спасибо! Теперь я обладаю этим знанием и счастлив :)
9 сен 10, 12:46    [9410315]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Плохо, что для Вас это пришлось слишком долго разжевывать.

Картина: барана долбят палками по спине, бьют лопатами по голове, стреляют из резиностелов по ногам. Ни в какую. Баран упрямо смотрим на ворота и твердит: "Это не ворота, это - забор!"
9 сен 10, 13:02    [9410449]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 310
Хотя, если разобраться, то это вы не в инструкции SQL бинарное значение указали, а через объект OleDbParameter (о чем, собственно, я и спрашивал).
Так что, зря вы так, с двойками...
9 сен 10, 13:08    [9410494]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 310
Какой вы злой дядька, МСУ. Компьютер вам идет на вред.
Есть на свете "люди добрые", а есть те, которые к ним не относятся...
9 сен 10, 13:30    [9410691]     Ответить | Цитировать Сообщить модератору
 Re: Запись файла-картинки с БД с помощью ADO.NET  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Игорь1973
Хотя, если разобраться, то это вы не в инструкции SQL бинарное значение указали, а через объект OleDbParameter (о чем, собственно, я и спрашивал).
Так что, зря вы так, с двойками...

Через параметр решается не только задача с хранимыми процедурами - через параметр решаются все задачи выполнения SQL.
А Вы утверждали, что бинарные данные можно передавать только через хранимые процедуры. Вот в чём Ваша ошибка. Понимаете, о чём вещаю-то?
9 сен 10, 13:39    [9410766]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить