MySQL i VB6 (Zapis i odczyt danych binarnych)


(Oldman66) #1

Witam...

Szukam pomocy w rozwiązaniu następującego problemu...

Używam bazy MySQL 5.0.66a i do jej odczytu napisałem program w VB6 wszystko jest w porządku do chwili korzystania z pól logicznych.

otóż deklaruje w bazie pola logiczne typu BOOL poleceniem:

CREATE TABLE hasla (identyfikator INT NULL AUTO_INCREMENT PRIMARY KEY, nazwisko VARCHAR(50) NULL, imie VARCHAR(50) NULL, login VARCHAR(10) NULL, haslo VARCHAR(10) NULL, sterowanie BOOL, superwizor BOOL, ostatni DATETIME NULL) ENGINE = MYISAM

a co gorsza kiedy próbuje skorzystać z tych pół (w programie VB6) np:

otrzymuje komunikat iż

wdzięczny będę za wszelkie sugestie


(system) #2

Witaj :slight_smile:

Sugeruję ci nie używać pól typu BOOL. W MySQL są pola typu ENUM, INT (i odmiany jak TINYINT), w ostateczności zwykły CHAR. Typ BOOL w MySQL nie jest tak do końca kompatybilny z innymi bazami, a jego używanie nie oszczędza zbyt wiele miejsca na dysku oraz zasobów pamięci i CPU. Poza tym, w starszych wersjach VB (jak twoja) są właśnie tego rodzaju problemy, że nie współpracują one z nowymi wymysłami (m.in. z wprowadzonym nie tak dawno typem BOOL). Tak więc odradzam BOOL - użyj ENUM (MySQL sam zadba o przechowywanie i kompresję danych z różnych pól ENUM w bazie). Przykład: ENUM ('Y', 'N') DEFAULT 'Y'. Powodzenia :slight_smile:

Pozdrawiam

SoftMaker.pl


(Oldman66) #3

Dzięki za podpowiedź...

mam też drugi problem. Otóż usiłuje zapisać do bazy krótki (max 24 znaki) ciąg znaków binarnych (tj. zawierający znaki 00 do FF) i napotkałem problemy...

przy stosowaniu pól typu Varchar(25) otrzymuje komunikat o potrzebie stosowania szweckiego sposobu zapisu

przy polach typu char(25) jeśli już baza przyjmnie zapis to dane są "poodwracane"

próbowałem też używać różnych odmian pól blob lub binary ale wtedy "wielokrokowa operacja wygenerowała błędy"


(Airborn) #4

Oldman66 , proszę poprawić tytuł tematu na konkretny, mówiący dokładniej o problemie. W przeciwnym razie temat zostanie przeniesiony do kosza.