Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по тексту БД, но текст большого размера... 
:(
    Опции темы
beif
Дата 7.11.2004, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.8.2003
Где: Россия, Кемерово

Репутация: нет
Всего: 1



Хелп! Посоветуйте, есть БД, есть текст большого размера (длинее 255), как запихать его в БД, причём, что бы оставалась возможность поиска по нему и как осуществить этот поиск?
PM MAIL WWW ICQ   Вверх
Vit
Дата 8.11.2004, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Id_записи integer
Stroka integer
Текст string (255)

В эту таблицу забиваешь текст построчно, т.е. на каждый текст отводится столько записей, сколько в нём строк


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
beif
Дата 8.11.2004, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.8.2003
Где: Россия, Кемерово

Репутация: нет
Всего: 1



Vit, у меня несколько тысяч 50-70 строковых текстов... каждую строку делать записью... а строки могут меняться - добавляться, удаляться... Максимум строк не известен (т.е. строк может быть и 150)... и что делать?
PM MAIL WWW ICQ   Вверх
Vit
Дата 8.11.2004, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Ну и что - ты читаешь сразу все записи к тексту, после любых изименений - удаляешь их все из базы и добавляешь в отредактированном виде - это очень просто, тебе не надо будет разбираться каждый раз по своему:


Код

Procedure ReadText(id:integer; text:TStrings);
begin
 Query.active:=false;
 Query.sql.text:='Select text from myTable where id='+inttostr(id)+' Order by StringNumber';
 Query.active:=true;
 text.clear;
 While not Query.eof do
 begin
   text.add(Query.fields[0].asstring);
   Query.next;
 end;
 Query.active:=false;
end;

Procedure WriteText(id:integer; text:TStrings);
 var i:integer
begin
 Query.active:=false;
 Query.sql.text:='Delete from myTable where id='+inttostr(id);
 Query.ExecSQL;
 Query.sql.text:='Insert into myTable (id, StringNumber, Text) Values('+inttostr(id)+', :sn, :txt)';
 Query.params.ParseSQL(Query.sql.text, true);
 for i:=0 to text.count-1 do
   begin
     Query.params.Parambyname('sn').value:=i;
     Query.params.Parambyname('txt').value:=text[i];
     Query.ExecSQL;
   end;
end;



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
beif
Дата 8.11.2004, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.8.2003
Где: Россия, Кемерово

Репутация: нет
Всего: 1



Vit - гениально! Спасибо! Это очень умно!
PM MAIL WWW ICQ   Вверх
Vit
Дата 8.11.2004, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Такое хранение имеет недостатки:
1) Строки ограниченной длинны
2) Трудно искать фразу если она сразу в двух строках, впрочем это можно обойти если нет переносов слов.
Добавлено @ 21:30
Кстати запись в таблицу будет всё-таки работать быстрее через TTable (впрочем толкьо если доступ эксклюзивный)


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
beif
Дата 9.11.2004, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.8.2003
Где: Россия, Кемерово

Репутация: нет
Всего: 1



Длина строк 255 - это все-таки достаточно много, а перенос можно и не делать. Так что данный вариант мне очень подходит! Спасибо еще раз огромное!
PM MAIL WWW ICQ   Вверх
Vit
Дата 9.11.2004, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Всегда пожалуйста


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие СУБД | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.