Страница 1 из 1

запись файла с расширением exe в базу данных

Добавлено: 03 сен 2015, 18:25
rt5yhd
Здравствуйте, помогите пожалуйста. Мне нужно в базу данных вставить файл с расширением exe, vi для соединения к базе я сделал (рис.jpg). Делаю insert с помощью DB Tools Insert Data.vi, формирую кластер Data. Как значения integer и string вставлять знаю, а как вставить exe-шник в поле типа BLOB ?

Re: запись файла с расширением exe в базу данных

Добавлено: 03 сен 2015, 18:29
dadreamer
Никогда с этим не работал, но рискну предположить, что файл сперва нужно считать с помощью Read from Binary File, а затем бинарные данные записать в БД.
BLOB (англ. Binary Large OBject — двоичный большой объект) — массив двоичных данных.

Проблема с запуском exe файла из Labview

Добавлено: 04 сен 2015, 15:24
rt5yhd
Здравствуйте, помогите пожалуйста решить проблему. Не запускается приложение exe из labview (open.jpg).
Возникает ошибка "Labview: Memory is full".
Файл program.exe весит 50 Мбт.

Re: Проблема с запуском exe файла из Labview

Добавлено: 04 сен 2015, 15:38
dadreamer
Или путь неверный, или такого файла по указанному пути не существует.
Пример вызова :vi: :

Re: запись файла с расширением exe в базу данных

Добавлено: 04 сен 2015, 15:49
rt5yhd
dadreamer писал(а):Никогда с этим не работал, но рискну предположить, что файл сперва нужно считать с помощью Read from Binary File, а затем бинарные данные записать в БД.
BLOB (англ. Binary Large OBject — двоичный большой объект) — массив двоичных данных.
Сделал запись бинарных данных в БД, но теперь возникла другая проблема: как запустить exe файл из базы данных, т.е. делаю select запрос и что с этими бинарными данными делать, чтобы запустился exe файл.

Re: запись файла с расширением exe в базу данных

Добавлено: 04 сен 2015, 15:53
dadreamer
rt5yhd, очевидно, что вам нужно записать эти данные в файл с помощью Write to Binary File, а затем запустить файл с помощью System Exec.
P.S. Передавать через сервер файлы с помощью базы данных - оригинально, я бы не додумался. :D

Re: Проблема с запуском exe файла из Labview

Добавлено: 04 сен 2015, 19:46
dadreamer
rt5yhd писал(а):Возникает ошибка "Labview: Memory is full".
Кстати говоря, System Exec возвращает не внутреннюю ошибку :labview: , а ошибку ОС, т.е. Windows. Ошибки WinAPI описаны в MSDN, но на практике обычно пользуются функцией FormatMessage для получения описания ошибки в текущей локали. Я у себя давно держу вот такой :vi: :
Get Win32 Error Message.vi
lv2011
(16.37 КБ) 256 скачиваний
И вот пример случая как у автора:
2015-09-04_21-43-50.jpg
2015-09-04_21-43-50.jpg (13.33 КБ) 15752 просмотра
Описание ошибки будет содержать текст "Не удается найти указанный файл." (код ошибки = 2).

Re: запись файла с расширением exe в базу данных

Добавлено: 08 сен 2015, 11:20
AlexanderKonoval
загружать в базу экзешник - как-то это похоже на какие-то не очень хорошие действия.

Re: запись файла с расширением exe в базу данных

Добавлено: 08 сен 2015, 22:37
rt5yhd
Или путь неверный, или такого файла по указанному пути не существует.
Путь верный и файл существует

Re: запись файла с расширением exe в базу данных

Добавлено: 09 сен 2015, 08:09
dadreamer
rt5yhd, а разрешение на доступ к файлу есть? Программа из-под админа запущена? И что возвращает :vi: Check If File Or Folder Exists?
AlexanderKonoval писал(а):загружать в базу экзешник - как-то это похоже на какие-то не очень хорошие действия.
На эксплоит это похоже, но ни разу не видел, чтобы такое делали на :labview: , так что наверное это что-то безобидное, типа файлообменника. :wink:

Re: запись файла с расширением exe в базу данных

Добавлено: 09 сен 2015, 11:12
rt5yhd
dadreamer писал(а):rt5yhd, а разрешение на доступ к файлу есть? Программа из-под админа запущена? И что возвращает :vi: Check If File Or Folder Exists?
AlexanderKonoval писал(а):загружать в базу экзешник - как-то это похоже на какие-то не очень хорошие действия.
На эксплоит это похоже, но ни разу не видел, чтобы такое делали на :labview: , так что наверное это что-то безобидное, типа файлообменника. :wink:
Разрешение на доступ к файлу есть, программа из-под админа и Check if File Or Folder Exists возвращает true.

Это нужно для того, чтобы делать обновления клиентам. Новую версию ПО (файл exe) загружаем в базу данных на сервере. Клиентское приложение смотрит наличие обновлений и если они есть, то предлагает обновиться.

dadreamer вы писали "Кстати говоря, System Exec возвращает не внутреннюю ошибку , а ошибку ОС, т.е. Windows. Ошибки WinAPI описаны в MSDN". А почему эта ошибка ОС? Я посмотрел в labview help, там ошибка с кодом 2 - "Memory is full". Похоже это всё таки ошибка Labview.

Re: запись файла с расширением exe в базу данных

Добавлено: 09 сен 2015, 11:15
Borjomy_1
Хм... а может проблема со стороны антивируса?

Re: запись файла с расширением exe в базу данных

Добавлено: 09 сен 2015, 11:33
dadreamer
rt5yhd писал(а):А почему эта ошибка ОС? Я посмотрел в labview help, там ошибка с кодом 2 - "Memory is full". Похоже это всё таки ошибка Labview.
Потому что в хэлпе написано:
System Exec Error Codes
The System Exec VI can return either Windows or LabVIEW error codes. Windows and LabVIEW error codes also can use the same identifying numbers. For example, the System Exec VI can return Windows system error code 2, File_not_Found, in addition to LabVIEW error code 2.
И при запуске экзешника он никак не может (и не должен) загружаться в память процесса :labview: , это не библиотека. Плюс, 50 мегабайт - маловато, чтобы съесть всю память на компе.

А решение вашей проблемы прямым текстом прописано в хэлпе:
working directory is the file system directory from which you want to execute the command. You do not have to set working directory.
Изображение Note Do not use working directory to locate the executable you want to run. working directory applies to the executable only after it launches.
Так что убирайте вход working directory и прописывайте весь путь в command line.

Re: запись файла с расширением exe в базу данных

Добавлено: 09 сен 2015, 11:54
rt5yhd
Borjomy_1 писал(а):Хм... а может проблема со стороны антивируса?
Антивирус стоит Avast. Антивирус отключил, службу Avast Antivirus остановил - таже ошибка. Если я в папку с:\Users\User\Documents\Labview Data скопирую calc.exe, odbcad32.exe или другую программу из system32, то ошибки не возникает, а если запускать например opera_setup.exe или notepad++.exe и т.д. не из system32, то получаю "Memory is full".

Re: запись файла с расширением exe в базу данных

Добавлено: 09 сен 2015, 12:02
rt5yhd
Так что убирайте вход working directory и прописывайте весь путь в command line.
Вот это помогло. Спасибо большое !