Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.035 c
1-41342
Asdf
2003-10-30 17:32
2003.11.13
Как сделать паузу на какое-то время в проге?


3-40908
нАвичОк
2003-10-20 12:57
2003.11.13
Как к DBGrid, DBGridEh и пр. добавить кнопочку для каждой строчки


1-41694
Тохус
2003-11-04 00:32
2003.11.13
GetSystemTime


14-41922
Style
2003-10-21 09:45
2003.11.13
Военкомат. Вот оно мнение жителей нашего города.


1-41676
Igit
2003-10-24 20:16
2003.11.13
pascal and assembler





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский