Dalam menentukan / mendeklarasikan jenis data dalam suatu aplikasi, harus kita perhatikan juga database (engine) yang akan digunakan. Hal ini dikarenakan adanya perbedaan (pandangan) mengenai type data. Untuk menghindari ke-khawatiran anda mengenai penentuan jenis data, dibawah ini ada tabel mengenai perbedaan “data type” antara Visual Basic dan MySQL.
Pada beberapa type data, Visual Basic menyimpan data lebih besar sehingga pada saat koneksi data dengan MySQL jadi tidak sesuai.
MySQL Datatype | Length | VB6 Datatype | Length | Notes |
TINYINT | -128 to 127 | integer | -32,768 to 32,767 | * |
TINYINT UNSIGNED | 0 to 255 | byte | 0 to 255 | |
SMALLINT | -32,768 to 32,767 | integer | -32,768 to 32,767 | |
SMALLINT UNSIGNED | 0 to 65,535 | long | -2,147,483,647 to 2,147,483,647 | * |
MEDIUMINT | -8,388,608 to 8,388,607 | long | -2,147,483,647 to 2,147,483,647 | * |
MEDIUMINT UNSIGNED | 0 to 16,777,215 | long | -2,147,483,647 to 2,147,483,647 | * |
INT | -2,147,483,647 to 2,147,483,647 | long | -2,147,483,647 to 2,147,483,647 | |
INT UNSIGNED | 0 to 4,294,967,295 | double | 64 Bit | 1* |
BIGINT | 64 Bit | N/A | N/A | 2 |
FLOAT | 32 Bit Floating Point | single | 32 Bit Floating Point | |
DOUBLE | 64 Bit Floating Point | double | 64 Bit Floating Point | |
DECIMAL | Variable Floating Point | double | 64 Bit Floating Point | 3* |
CHAR | 1 to 255 Characters | string | 1 to Approx. 2,000,000,000 Characters | * |
VARCHAR | 1 to 255 Characters | string | 1 to Approx. 2,000,000,000 Characters | * |
TINYTEXT | 1 to 255 Characters | string | 1 to Approx. 2,000,000,000 Characters | * |
TEXT | 1 to 65535 Characters | string | 1 to Approx. 2,000,000,000 Characters | 4* |
MEDIUMTEXT | 1 to 16,777,215 Characters | string | 1 to Approx. 2,000,000,000 Characters | 4* |
LONGTEXT | 1 to 4,294,967,295 Characters | N/A | N/A | 5 |
all BLOB types | 1 to 4,294,967,295 Bytes | Variant | Varies | 6 |
DATE | Date without Time | date | Date and Time value | * |
DATETIME | Date and Time | date | Date and Time value | |
TIMESTAMP | Date and Time | date | Date and Time value | |
TIME | Time | date | Date and Time value | * |
YEAR | Year | integer | -32,768 to 32,767 | * |
ENUM | Enumeration of Value Set | string | 1 to Approx. 2,000,000,000 Characters | * |
SET | Set of Values | string | 1 to Approx. 2,000,000,000 Characters | * |
Catatan :
- Tidak ada data integer 32 bit unsigned integer di VB, sehingga data harus disimpan dalam type “double”, yang sebenarnya merupakan “floating”, oleh karena itu, berhati-hatilah untuk memastikan bahwa setiap nilai yang akan anda deklarasikan untuk MySQL dibulatkan sebelum mengirimkan suatu nilai. Penggunaan yang “integer unsigned” tidak dianjurkan di VB6, tetapi memang (mungkin) memiliki beberapa kelebihan dengan bilangan bulat yang lebih besar pada VB.NET.
- BIGINT tidak dapat digunakan dengan ADO, karena akan mengakibatkan kesalahan, Anda dapat menggunakan MyODBC pilihan 16.384 (konversi dari BIGINT ke INT), tetapi data BIGINT akan terbatas dikarenakan ukuran data INT.
- DECIMAL dapat dikirimkan ke type data VB6 yang lain tergantung pada bagaimana anda mendefinisikan kolom DECIMAL saat membuat tabel. Secara pribadi saya akan merekomendasikan tidak menggunakan jenis DECIMAL, karena memerlukan waktu 1 byte per digit untuk penyimpanan datanya, Anda lebih baik menggunakan tipe “numeric” yang sesuai.
- Jika Anda memiliki masalah loading MEDIUMTEXT TEKS dan nilai-nilai dari sebuah recordset, pastikan parameter max_allowed_packet MySQL mempunyai nilai besar.
- Data LONGTEXT akan perlu diperlakukan sebagai BLOB dan ditulis langsung ke sebuah file menggunakan metode penanganan BLOB.
- Semua data BLOB harus dikirimkan dengan menggunakan metode “getchunk / appendchunk” atau ADO. Varian dalam kasus ini menjadi sebuah array, dan tidak dapat ditangani langsung oleh VB6.