Использование булева типа в БД

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Lokki
Сообщения: 5
Зарегистрирован: 04 авг 2005, 10:02

Использование булева типа в БД

Сообщение Lokki » 04 авг 2005, 10:08

Hi2All
Когда начал разбираться с Yaffil, с удивлением обнаружил, точнее не обнаружил, булева типа данных. Создал домен:
bool char(1) DEFAULT 'y' NOT NULL CHECK(value='y' OR value='n')
Но это все равно изврат :-\
К тому же возникают проблемы при работе с дотнетом - там приходится ручками перегонять типы.

Подскажите, плиз, как разрулиться правильно?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 авг 2005, 10:27

нафиг этот булевский тип не нужен.

Lokki
Сообщения: 5
Зарегистрирован: 04 авг 2005, 10:02

Сообщение Lokki » 04 авг 2005, 10:48

Да не, я понимаю, что кроме типа char остальное все отстой и фуфло для полных ламеров....
Но... удобное фуфло, однако.

Также как и булев тип, который используется (мной во всяком случае) очень часто.

ЗЫЖ а еще можно обсудить Windows vs. Linux :wink:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 авг 2005, 11:09

я вполне серьезно. булевский тип в базе имеет очень мало смысла. Посмотри на булевский тип в IB 7. Когда его не было, народ кричал "хотим!". Когда он появился, все быстро увяли.
можешь почитать топик для примера:
http://forum.ibase.ru/phpBB2/viewtopic. ... ht=boolean

для дотнета скорее всего надо использовать драйвер FB. Куда и чего конвертировать - не понял, приведи пример. Скорее всего твой вопрос может быть трансформирован в просьбу авторам драйвера. В настоящее время, вроде как, введение типа boolean FB 2 не планируется.

Lokki
Сообщения: 5
Зарегистрирован: 04 авг 2005, 10:02

Сообщение Lokki » 05 авг 2005, 11:05

Разобрался я с ситуацией.
Разрулиться с булевыми значениями можно следующим макаром:
В таблице создать поле типа int, в котором любое ненулевое значение будет означать TRUE, а нулевое FALSE. Также, как FALSE трактуется поле со значением NULL.

В приложении, при инициализации DataTable поле должно быть объявлено с типом bool:

protected DataTable dt = new DataTable("DT");
dt.Columns.Add("my_bool", typeof(bool));

da.Fill(dt);

Ответить