"This operation is not defined for system tables."
Добавлено: 30 ноя 2005, 18:03
Разбираюсь с embedded firebird.
Да заодно и с sql - раньше писал только локальные БД paradox, access.
Использую компонет TpFIBDatabase для BCB6. (триальная версия, насколько понял)
ОС Windows2000.
gds32.dll и иже с ними скопировал в каталог программы.
Проблема при создании таблицы в созданной базе.
#define DB_PATH "C:\\TEST.fDB"
const char * pcCreateQuery =
"CREATE TABLE AbonList (" \
"iNumber INTEGER,\n"\
"strName VARCHAR(256));"
;
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if (FileExists(DB_PATH)) DeleteFile(DB_PATH);
Database1->DBParams->Clear();
Database1->DBParams->Add("USER 'SYSDBA' PASSWORD 'masterkey'");
Database1->DBParams->Add("PAGE_SIZE = 2048");
Database1->DBParams->Add("DEFAULT CHARACTER SET WIN1251");
Database1->DBName = DB_PATH;
Database1->SQLDialect = 3;
try
{ Database1->CreateDatabase(); }
catch (...)
{
}
// всё нормально - база создается
...
// пробуим создать табличку
Database1->Execute(pcCreateQuery);
//ЗДЕСЬ возникает ошибка
//"This operation is not defined for system tables.unsuccessful metadata
// update."
ЕСЛИ СДЕЛАТЬ ТАК
const char * pcCreateQuery =
"CREATE TABLE AbonList (" \
"iNumber INTEGER,\n"\
"strName INTEGER);"
;
то таблица в базе создается, в неё можно добавлять элементы, производить выборку и т.д.
почему возникает ошибка при типе поля strName == CHAR(), VARCHAR()?
Не пинайте, если было
Да заодно и с sql - раньше писал только локальные БД paradox, access.
Использую компонет TpFIBDatabase для BCB6. (триальная версия, насколько понял)
ОС Windows2000.
gds32.dll и иже с ними скопировал в каталог программы.
Проблема при создании таблицы в созданной базе.
#define DB_PATH "C:\\TEST.fDB"
const char * pcCreateQuery =
"CREATE TABLE AbonList (" \
"iNumber INTEGER,\n"\
"strName VARCHAR(256));"
;
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if (FileExists(DB_PATH)) DeleteFile(DB_PATH);
Database1->DBParams->Clear();
Database1->DBParams->Add("USER 'SYSDBA' PASSWORD 'masterkey'");
Database1->DBParams->Add("PAGE_SIZE = 2048");
Database1->DBParams->Add("DEFAULT CHARACTER SET WIN1251");
Database1->DBName = DB_PATH;
Database1->SQLDialect = 3;
try
{ Database1->CreateDatabase(); }
catch (...)
{
}
// всё нормально - база создается
...
// пробуим создать табличку
Database1->Execute(pcCreateQuery);
//ЗДЕСЬ возникает ошибка
//"This operation is not defined for system tables.unsuccessful metadata
// update."
ЕСЛИ СДЕЛАТЬ ТАК
const char * pcCreateQuery =
"CREATE TABLE AbonList (" \
"iNumber INTEGER,\n"\
"strName INTEGER);"
;
то таблица в базе создается, в неё можно добавлять элементы, производить выборку и т.д.
почему возникает ошибка при типе поля strName == CHAR(), VARCHAR()?
Не пинайте, если было