powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Как из Delphi получить имена столбцов таблицы известной
6 сообщений из 6, страница 1 из 1
Как из Delphi получить имена столбцов таблицы известной
    #37615626
Andrey_TT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые читатели форума, у меня к Вам есть казалось бы элементарный вопрос. А состоит он в следующем, есть БД sqlite3, для работы с ней использую файл sqlite3.dll и 2 файла SQLite3.pas и SQLiteTable3.pas. Все хорошо, подключился к БД список имен таблиц читаю в ComboBox командой
Код: pascal
1.
DB.GetTableStrings('SELECT name FROM sqlite_master WHERE type="table" ORDER BY name',ComboBox1.Items);


Все работает в ComboBox1 появляется список таблиц БД, но есть необходимость прочитать еще и имена столбцов/полей не помню как правильнее, на форуме тема уже поднималась и кто-то совершенно правильно посоветовал использовать команду
Код: sql
1.
PRAGMA table_info(имятаблицы)


или
Код: sql
1.
SELECT * FROM имятаблицы

.
Здесь есть один тонкий момент если писать
Код: pascal
1.
DB.GetTableStrings('PRAGMA table_info(имятаблицы)',ComboBox1.Items)


, то получим только CID тоесть 1,2,3,4... цифры, но не имена тут можно знать сколько всетаки полей, но не их названия, на официальном сайте есть пояснение при работе с БД через консоль с ихней програмкой, мол нужно выполнить .headers ON но как же это выполнить из delphi???? Да и кстати на команду PRAGMA она не влияет. Не думаю что это не делается или делается очень сложно.

Нужна Ваша помощь.
...
Рейтинг: 0 / 0
Как из Delphi получить имена столбцов таблицы известной
    #37615883
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_TT,

при выполнении

Код: sql
1.
PRAGMA table_info('имятаблицы')



получаем Dataset с полями CID, NAME, TYPE, NOTNULL, DFLT_VALUE, PK

где NAME - имя поля, скорее всего в методе GetTableStrings Вы неправильно заполняете ComboBox (берете не то поле)
...
Рейтинг: 0 / 0
Как из Delphi получить имена столбцов таблицы известной
    #37616912
Andrey_TT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, тогда еще вопрос, а как же тогда заполнять правильно? Метод GetTableStrings возвращает тип strings, тут тогда получается, что не совсем strings, а array of strings.
В любом случае спасибо за Ваш ответ.
...
Рейтинг: 0 / 0
Как из Delphi получить имена столбцов таблицы известной
    #37616966
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_TT,

судя из кода метода GetTableStrings действительно берутся данные только из первого поля DataSet,
что мешает добавить еще один параметр в метод и указывать из какого поля брать данные.



Код: pascal
1.
procedure GetTableStrings(const SQL: Ansistring; const Value: TStrings; FieldNum: integer = 0);



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TSQLiteDatabase.GetTableStrings(const SQL: Ansistring;
  const Value: TStrings; FieldNum: integer);
var
  Table: TSQLiteUniTable;
begin
  Value.Clear;
  Table := self.GetUniTable(SQL);
  try
    while not table.EOF do
    begin
      Value.Add(Table.FieldAsString(FieldNum));
      table.Next;
    end;
  finally
    Table.Free;
  end;
end;



P.S. Добавив проверки на наличие этого поля
...
Рейтинг: 0 / 0
Как из Delphi получить имена столбцов таблицы известной
    #37616993
Andrey_TT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, потому что болван. спасибо за помощь. Я копал в не ту сторону, а надо по правильному лезть смотреть что же метод должен вернуть, как сделали Вы, спасибо
...
Рейтинг: 0 / 0
Как из Delphi получить имена столбцов таблицы известной
    #37617000
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_TT,

нзч
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Как из Delphi получить имена столбцов таблицы известной
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]