Я использую C++ Builder (Delphi 10.2 и C++Builder 10.2 Update 2), и мне нужен метод, который в случае отсутствия конкретной таблицы создает ее с использованием объектов TADO (ADODB)? Я имею в виду TADOQuery, TADOTable, TADOConnection и т.д.
Как я могу это сделать?
Я пробовал смотреть на методы TADOConncection, TADOTable, но ни один из них не кажется полезным. Я также пробовал этот маршрут (https://docwiki.embarcadero.com/Libraries/Alexandria/en/Bde.DBTables.TTable.Exists), но есть проблемы с совместимостью.
Если вы спрашиваете, как создать таблицу, вы можете использовать TADOQuery для выполнения оператора SQL, который вы бы использовали, если бы вы создавали таблицу вручную (используя SQL).
@RogerCigol моя проблема в том, что я не могу определить, есть таблица в базе данных или нет. Тогда, если его нет, я должен его создать, а там да, я использую TADOQuery. Я все равно благодарю вас за попытку помочь мне.
@malom Я тоже присматривался к этому методу, но у меня возникли проблемы с поиском цикла для чтения строк с использованием C++, так как я не знаю Delphi. Я искал что-то другое, но, видимо, я думаю, что это единственный способ. Спасибо за предложение.
Это помогает?
TADOConnection *YOUR_TADOCONNECTION; // your connection defined earlier in your code
TStringList *TableList = new TStringList;
bool WithSystemTables = true; // or false according to your requirements
YOUR_TADOCONNECTION->GetTableNames(TableList, WithSystemTables);
for (int i = 0 i < TableList->Count(); i++) {
String NextTableName = TableList->Strings[i];
/*.... your check for the table name being the one you want goes here .... */
}
delete TableList;
На самом деле вчера я решил примерно так же, но у вас получилось лучше, поэтому я просто изменил свой код с помощью вашего решения. Большое спасибо.
Вы можете использовать TADOConnection.GetTableNames(), чтобы получить список существующих имен таблиц. Но я не знаю, как создать, если не существует.