Вниз
Скачать: CL | DM;

MS SQL, записать поле text   Найти похожие ветки 

← →
frogl   (2003-10-21 18:42) [0]

Добрый день.

Есть MS SQL. Есть таблица с полем типа text. Как в нее записать какой-либо текстовый файл.
Пробовал так:

memo.Lines.LoadFromFile("c:\1.htm");
s:="insert into messages(forum_id, messag) values (12," +
"""" + memo.Lines.Text + """"
+ ")";
q.SQL.Text:=s;
q.ExecSQL;

Если в memo что-то простое, вида "привет" - все работает. Если загружаю реальный файл - при выполнении запроса выскакивает сообщение - reaised exception class EOleException with message "Parameters object is improperly defined. Inconsistent or incomplete information was provided."

Как делать правильно ?


← →
Семен Сорокин ©   (2003-10-21 18:47) [1]

попробуй так:

memo.Lines.LoadFromFile("c:\1.htm");
q.SQL.Add("insert into messages(forum_id, messag) values (12, :text)")
q.ParamByName("text").AsString := memo.Lines.Text;
{для ADO: q.Parameters.ParamByName("text").Value := ...}
q.ExecSQL;


← →
alxx ©   (2003-10-21 19:22) [2]

Вообще то реальный текст не вставляется потому, что там двоеточия встречаются. А еще если апострофы встретятся - тоже баги будут.


← →
me   (2003-10-21 20:55) [3]

Этот пример загрузки текстового файла в поле my_text_field таблицы my_table можно оформить как хранимую процедуру:

declare @FSObject int, @FileID int, @hr int, @FileName varchar(256), @stm int, @buff varchar(8000)
execute @hr = sp_OACreate "Scripting.FileSystemObject", @FSObject OUT
if @hr = 0
begin
set @FileName = "c:\some_folder\some_file.txt"
execute @hr = sp_OAMethod @FSObject, "FileExists", @exist OUT, @FileName
if @exist = 1
begin
execute @hr = sp_OAMethod @FSObject, "GetFile", @FileID OUT, @FileName
IF @hr = 0
begin
execute @hr = sp_OAMethod @FileID, "OpenAsTextStream", @stm OUT, 1
IF @hr = 0
begin
execute @hr = sp_OAMethod @stm, "ReadAll", @buff OUT
update my_table set my_text_field = @buff where ...
end
end
end
end
execute @hr = sp_OADestroy @FSObject


← →
frogl   (2003-10-22 10:20) [4]

Семен - спасибо. Мнепомог твой способ.

me - тоже спасибо. Постараюсь в ближайшее время разобраться и с твоим вариантом.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
3-40954
inkotex
2003-10-17 11:44
2003.11.13
Помогите с примером!


14-42100
Bis
2003-10-23 08:13
2003.11.13
В это сабже шесть слов


4-42317
Слава
2003-09-04 19:06
2003.11.13
Как перехватить dos ответ


14-42131
Nelud
2003-10-14 20:31
2003.11.13
Псевдо-двоичная система счисления


1-41645
Furkan
2003-11-04 10:18
2003.11.13
Caption у ListView.Columns




   Наверх