Кодировка в СУБД Interbase

  • Автор темы antosha_Z
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

antosha_Z

#1
Проблема состоит в следующем:

Необхдимо создавать БД динамически в Delphi во время выполнения программы.
При создании БД стандартными методами компанента TDatabase возникает проблема в кодировке. Сама кодировка при создании БД передаеться (наша WIN1251), проверено на примере при извлечении метаданных из уже созданной БД. Но сама база данных в регистрейшен инфо пишет что кодировки нет никакой по умолчанию. Я не понимаю почему так происходит. Скрипт созданной базы из Delphi и скрипт созданной базы в IbExpert полностью совпадают. Можно ли как-то решить эту проблему.

2 вариант создания - исполнение самого SQL кода в Delphi в IBQuery. Ну здесь получаеться проблема еще с неначавщейся транзакцией для данной БД. может кто знает как решить и эту проблему?

Спасибо за внимание!
 
X
#2
смотрим синтаксис оператора CREATE DATABASE:

CREATE {DATABASE | SCHEMA} ’filespec’
[USER ’username’ [PASSWORD ’password’]]
[PAGE_SIZE [=] int]
[LENGTH [=] int [PAGE]]
[DEFAULT CHARACTER SET charset]
[<secondary_file>];

<secondary_file> = FILE ’filespec’ [<fileinfo>] [<secondary_file>]

<fileinfo> = LENGTH [=] int [PAGE] | STARTING [AT [PAGE]]
int [<fileinfo>]


соответственно, код должен быть примерно таким:

Код:
 with IbDatabase1 do begin
DatabaseName := 'd:\test.gdb';
Params.Add('user ''SYSDBA''');
Params.Add('password ''masterkey''');
Params.Add('DEFAULT CHARACTER SET win1251');
CreateDatabase;
end;
end;
 
A

antosha_Z

#3
не работает этот механизм, я уже пробовал раньше. Создаеться база с кирилической кодировкой (проверял созданную базу в эксперте), но при исполнении sql запроса, связаного с использованием строк в кирилице вылазит ошибка.
 
X
#4
механизм работает. проверено Электроником :blink: а ошибка вылазит, потому что при подключении к базе в TIbDatabase.Params должно стоять "lc_ctype=win1251".
 
A

antosha_Z

#5
Спасибо за помощь. Все получилось, тема закрыта :))
 
Статус
Закрыто для дальнейших ответов.