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

Вниз

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

 
frogl   (2003-11-09 11:26) [0]

Добрый день.

Делаю вот так:

_messag:=AnsiReplaceStr(_messag, """", """);
_message_name:=AnsiReplaceStr(_message_name, """", " ");

s:= "insert into messages(forum_id, message_name," +
"readed, marked, comment, messag, import_data)" +
" values (" + IntToStr(_forum_id) + "," +
"""" + _message_name + """" +
"," + IntToStr(_readed) +
"," + IntToStr(_marked) +
"," + """" + _comment + """" +
"," + ":messag" +
"," + dataStr +
")";

msq_genQuery.SQL.Text:=s;

try
msq_genQuery.Parameters.ParamByName("messag").Value:=_messag;
msq_genQuery.ExecSQL;
except
Inc(errorCount);
end;

При импорте около 1400 записей, 300 не вставляются - выбрасывается исключение. Это происходит именно из-за blob поля. То есть, если не вставлять его - все проходит - ок.

Что посоветуете ? Blob поле это ограмные HTML файлы, на что там обращать внимание уже не знаю ?
Может есть альтернативный способ вставки blob"ов ?

Заранее благодарен.


 
sniknik   (2003-11-09 11:30) [1]

> Может есть альтернативный способ вставки blob"ов ?
LoadFromStream


 
frogl   (2003-11-09 11:31) [2]

Stream"ом является файл на диске ? То есть мне нужно сначала строку сохранить на диск, а томом с диска грузить в БД ?


 
sniknik   (2003-11-09 11:59) [3]

не обязательно, это поток а откуда из файла или из другого места (другого потока/из сети/...) неважно (до определенной степени ;о))).


 
frogl   (2003-11-09 13:11) [4]

Переделал с помощью Stream - все равно ошибки при загрузке поля.
Удалось локализовать проблему - ошибки возникают в тех случаях, когда в загружаемом html есть строки вида - "<строка>"<строка>" - например "enter"ов".

Вот это не помогает:

_messag:=AnsiReplaceStr(_messag, """", """);

В принципе эти " " " можно было бы вообще заменить на " ", но это тоже нельзя, так как в html повсюду встречается строки вида color="red" и т.д.

Что посоветуете ?


 
sniknik   (2003-11-09 14:20) [5]

по идее для параметра все значение строка, есть там " или нет. т.е. должно работать. покажи как делаеш.


 
frogl   (2003-11-09 14:25) [6]

Вот так (пока через файл) :

// выгружаем сообщение во внешний файл
messag:=cds.FieldByName("messag").AsString;
messag:=AnsiReplaceStr(messag, """", """);
file_stream:=TFileStream.Create("c:\axfc.tmp", fmCreate or fmOpenWrite);
file_stream.Write(PChar(messag)^, Length(messag));
file_stream.Free;

// Загрузка в БД
msq_blobwriter.SQL.Text:="select * from messages where forum_id=" +
IntToStr(cds.FieldByName("forum_id").AsInteger) +
" and message_name=""" +
cds.FieldByName("message_name").AsString +
"""";
msq_blobwriter.Close;
msq_blobwriter.Open;

if (msq_blobwriter.RecordCount > 0) then
begin
msq_blobwriter.Edit;
TBlobField(msq_blobwriter.FieldByName("messag")).LoadFromFile("c:\axfc.tmp");
msq_blobwriter.Post;
end;

blob_stream.Free;


 
sniknik   (2003-11-09 16:56) [7]

зря ушол от первого варианта (ИМХО),

....
try
//msq_genQuery.Parameters.ParamByName("messag").Value:=_messag;
ADOQuery1.Parameters[0].LoadFromFile("c:\axfc.tmp", ftMemo);
msq_genQuery.ExecSQL;
except
Inc(errorCount);
end;
и все (вроде ;о))
вот с этим проблем если в тексте " быть не должно, проверь другие пераметры которые прямо в запрос вставляются (особенно дату, не на ", а вообще).


 
sniknik   (2003-11-09 16:57) [8]

:(
ADOQuery1 = msq_genQuery


 
frogl   (2003-11-10 13:47) [9]

Спасибо - то, что надо.



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

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

Наверх




Память: 0.46 MB
Время: 0.01 c
1-89814
TUser
2003-11-17 10:34
2003.11.27
FullScreen


7-90147
Dark Elf
2003-09-18 11:52
2003.11.27
Коды I/O Errors


3-89730
Vladimir_
2003-11-09 20:03
2003.11.27
цвет и толщина линий Dbgrid


1-89863
rosl
2003-11-18 02:36
2003.11.27
копирование


1-89898
frost
2003-11-15 11:32
2003.11.27
ShellTreeView и ShellListView - альтернатива?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский