C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Несколько вопросов по БД
Slay
Отправлено: 04.05.2005, 09:53


Не зарегистрирован







Вопрос 1.
При работе с БД постоянно кончается память, слышал ее нужно освобождать периодически. Как?

Вопрос 2.
Как открывать БД, типа как через OpenDialog? Я так понимаю нужно чтобы путь писался в DataBaseName, а имя в TableName? Покажите кусок кода как это сделать?

Вопрос3.
Как реализовать навигацию по MS SQL серверу? Необходимо реализовать движение по таблицам выбранной базы с возможностью создавать и удалять таблицы.

Вопрос4.
Как сделать условие по маске, например нужно отобрать значения по фамилии в разных падежах (Иванов, Иванову и т.д.) Как сделать что то типа if a="Иванов*" Подскажите? И как делать двойное условие?

Вроде пока все, всем заранее спасиба
Vlad
Отправлено: 04.05.2005, 10:10


Машинист паровоза

Группа: Участник
Сообщений: 231



по 1. Ни когда не встречал, что бы память кончалась, если только открывать и открывать базы до упора когда действительно память закончится. Я не думаю что больше 100 открытых таблиц нужно(да и то слишком много). Если идет утечка памяти , значит что то в коде не корректно.
по 2 : В OpenDialog выставляешь маску на расширение базы. делаешь открытие , вообщем обычный код ни чего сложного нет.
Приводить код не имеет смысла.
по 3 и 4. По поводу удаления в документации и встроенном хелпе на MS SQL все есть, с кусками кода. Поиск в SQL server books online дает: LIKE
Determines whether or not a given character string matches a specified pattern. A pattern can include regular characters and wildcard characters. During pattern matching, regular characters must exactly match the characters specified in the character string. Wildcard characters, however, can be matched with arbitrary fragments of the character string. Using wildcard characters makes the LIKE operator more flexible than using the = and != string comparison operators. If any of the arguments are not of character string data type, Microsoft® SQL Server™ converts them to character string data type, if possible.

Syntax
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

Arguments
match_expression

Is any valid SQL Server expression of character string data type.

pattern

Is the pattern to search for in match_expression, and can include these valid SQL Server wildcard characters.

CREATE PROCEDURE find_books @AU_LNAME char(20)
AS
SELECT @AU_LNAME = RTRIM(@AU_LNAME) + '%'
SELECT t.title_id, t.title
FROM authors a, titleauthor ta, titles t
WHERE a.au_id = ta.au_id AND ta.title_id = t.title_id
AND a.au_lname LIKE @AU_LNAME


AVC
Отправлено: 04.05.2005, 10:12


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

При работе с БД постоянно кончается память

Это зависит от того, кто и как писал клиентскую часть.

QUOTE

Как открывать БД, типа как через OpenDialog?

БД обычно не открывают, с ней связываются. OpenDialog это если у вас файловая БД и нужно указать где этот файл расположен.

QUOTE

Как реализовать навигацию по MS SQL серверу? Необходимо реализовать движение по таблицам выбранной базы с возможностью создавать и удалять таблицы.

Должна быть специальная таблица (представление, процедура), содержащая перечень всех таблиц (объектов). При её помощи можно получить список. Для создания и удаления нужно поизучать команды SQL

QUOTE

Как сделать условие по маске, например нужно отобрать значения по фамилии в разных падежах (Иванов, Иванову и т.д.) Как сделать что то типа if a="Иванов*" Подскажите? И как делать двойное условие?

Например так
Select ??? From ??? Where Upper(a) Like(‘ИВАН%’) and ....

Вроде пока все. Трудно изложить целый учебный курс в одном посте biggrin.gif

olegenty
Отправлено: 05.05.2005, 11:18


Ветеран

Группа: Модератор
Сообщений: 2412



QUOTE (AVC @ 04/05/2005, 11:12)
[QUOTE]
[QUOTE]
Как реализовать навигацию по MS SQL серверу? Необходимо реализовать движение по таблицам выбранной базы с возможностью создавать и удалять таблицы.
[/QUOTE]
Должна быть специальная таблица (представление, процедура), содержащая перечень всех таблиц (объектов). При её помощи можно получить список. Для создания и удаления нужно поизучать команды SQL
[QUOTE]

Information_schema — посмотри BOL на этот счёт. MSSQL хранит всю служебную информацию в системных таблицах БД. а вот создавать/удалять.. . а прав-то хватит?

Вернуться в Работа с базами данных в C++Builder