|
MySQL'de Bool Tip? 07.11.2007 - 23:46 Bir çoÄŸunuzun bildigi üzere MySQL'de Bool tip yoktur. Genelde bu tip yerine tinyint kullanılır zaten bazı mysql gui programlarıda bool olarak belirttiÄŸiniz kolonların tipini tinyint(1) olarak deÄŸiÅŸtirir. Aslında taşınabilirlik adına böylesi daha iyidir. Çünkü tüm veritabanlarında true, false yerine 0 ve 1 kullanmak daha rahat olabilir. Ama gel görki verileri listelerken kullanıcıya 0, 1 göstermek pekte iyi olmicektir. Misal QT3'deki QDataTable'da veriler söyle görünecektir.
böyle görüntülemektense true yada false veya qdatatable'nın trueText, falseText gibi özelliklerini özelleÅŸtirerek Evet veya Hayır diye görüntülemek göze daha çok hitap edip, anlaşılabilirliÄŸi artıracaktır. Geçenlerdeki bir projede bu sorun aÅŸmam gerekti ama nasıl? QT3'ün kaynak kodlarını indirip, sql sürücülerinin kaynak kodlarını incelemeye baÅŸladım. Direk bir patch yapmaktansa yeni bir sürücü oluÅŸturmak daha mantıklı geldi. Sql sürücülerinin bulunduÄŸu dizindeki mysql dizinini kopyalayıp "qsql_mysql.cpp" dosyanın adını "nsql_mysql.cpp" olarak deÄŸiÅŸtirip sürücü isiminide "qmysql"den "nmysql" e çevirdim ve QVariant::Type qDecodeMYSQLType( int mysqltype, uint flags ) olan fonksiyonu QVariant::Type qDecodeMYSQLType( MYSQL_FIELD* field ){
olarak deÄŸiÅŸtirip eski fonksiyonu çağıran diÄŸer kodlarıda qDecodeMYSQLType( MYSQL_FIELD* field ) deÄŸerini alacak ÅŸekilde yeniden düzenledim. Çünkü bu fonksiyon içerisinde kolonun uzunluÄŸunu elde etmem gerekliydi. Çünkü sürücümüzde kolon tipi tinyint ve uzunluÄŸu 1 ise bool dur. Sizde veritabanında bu kurala uyarak bu sürücüyü istediÄŸiniz gibi kullanabilirsiniz. Böylece kolon tiplerini belirtmiÅŸ olduk. Artık kolon tiplerimiz bool olarak dönecek fakat hala verileri bool olarak gönderemedik bunun içinde; QVariant QMYSQLResult::data( int field ) olan fonksiyonuda QVariant QMYSQLResult::data( int field ){
olarak deÄŸiÅŸtirip sürücüyü yeniden derledim ve iÅŸte sonuç.
hatta trueText ve falseText özellikleri ile oynayıp Evet, Hayır olarak göstermek daha bi albenili olacaktır, iÅŸte;
EÄŸer ben bu kadar ÅŸeyle uraÅŸamam diyorsanız benim düzenlediÄŸim sürücünün kaynak kodları ve derlenmiÅŸ dosyası için tıklayın. http://www.nesimia.com/projects/qt3-icin-mysql-driver-nmysqldriver Veritabanına baÄŸlanırken sürücü olarak az önce oluÅŸturduÄŸumuz sürücünün adını belirtmeniz yeterli (Bu örnekte NMYSQL1 siz istediÄŸiniz bir ismi verebilirsiniz. ) örnek bir cpp kodu; defaultDB = QSqlDatabase::addDatabase( "NMYSQL1"); 'MySQL'de Bool Tip?' İle İlgili DiÄŸer Yazılar İçin Tıklayın. 0 Yorum |
En Son Yorumlar (Blog)
En Çok Okunanlar (Blog)
Sponsor Bağlantı
|