Хочу записать картинки в базу данных постре.
Пытаюсь так
"INSERT INTO images(
| image)
|VALUES("
+ Данные.Хранилище.Получить() + ")";
В отладчике вместо двоичных данных просто слово "картинка".
Тип данных колонки image bytea. Но ничего не записывается.
Получать картинки с другой базы данных и записать их в 1с могу, используя ADODB.Stream, а как записать в стороннюю базу не знаю
image = Новый COMОбъект("ADODB.Stream");
image.type = 1;
image.Open();
image.LoadFromFile("C:\database\1.jpg");
RecordSet = Новый COMОбъект("ADODB.Recordset");
RecordSet.CursorLocation = 3;
RecordSet.ActiveConnection = Connection;
RecordSet.Open("Select * FROM images",Connection,2,3);
RecordSet.AddNew();
RecordSet.Fields("image").Value = image.Read();
Recordset.Fields("product").Value = Данные.Объект.УникальныйИдентификатор();
RecordSet.Update();
RecordSet.Close();
Сейчас пробую так. Картинку пишет, правда пока не проверил правильно ли.Не хочет писать уникальный идентификатор, он имеет такой вид 'cbcf493f-55bc-11d9-848a-00112f43529a'. Через ADODB.Connection пишет без проблем.
Нашел на этот сайте такой способ
image = Новый COMОбъект("ADODB.Stream");
image.Type = 1;
image.Mode = 3;
image.Open();
image.LoadFromFile("C:\database\1.jpg");
Команда = Новый COMОбъект("ADODB.Command");
Команда.ActiveConnection = Connection;
Команда.NamedParameters = True;
Команда.CommandType = 1;
Команда.CommandText = "INSERT INTO images (image,product) VALUES(?,'"+ Данные.Объект.УникальныйИдентификатор() +"')";
ПараметрSQL=Команда.CreateParameter("@Pic", 205, 1,10000,image.Read());
image.Close();
Команда.Parameters.Append(ПараметрSQL);
Команда.Execute();
Выбивает ошибку:
Ошибка при записи изменений при обмене: Ошибка при вызове метода контекста (CreateParameter): Произошла исключительная ситуация (ADODB.Command): Приложение использует для текущей операции значение неверного типа.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший