Съответствие на типовете при Java и MySQL
Типовете на данните в MySql и Java
не са еднакви и необходимо известно
нагаждане, за да се прехвърлят данни
между база, която използва MySql типове
на данните и приложението използващо
специфичните за Джава типове. Нужно е
да се осигури съответствието от страна
на Dжава към общите за MySql типове. Трябва
да се убедим, че разполагаме с подходящ
тип информация и тогава ще е възможно
съхраняването й и повторното й използване.
Няма специално необходимост Джава
типовете да съответстват изцяло на тези
в MySql. Например типа String в Джава не е
отговаря директно на CHAR в MySql, но дава
достатъчно информация за типа, за да
може да представя успешно CHAR, VARCHAR или
LONGVARCHAR.
CHAR, VARCHAR и LONGVARCHARТиповете CHAR, VARCHAR и LONGVARCHAR в MySql са
близки. CHAR представлява малък и с
определена дължина низ от символи. При
VARCHAR тази дължина може да се променя, а
LONGVARCHAR се отнася към символен низ в
голяма дължина. За java програмистите не
е нужно да разграничават тези три типа
MYSql типове и могат да ги представят като
идентични. Те могат да бъдат пригодени
към използваните в Джава String или char[].
String изглежда е по-подходящия тип за
традиционна употреба. Самият клас String
предоставя метод до трансформация на
Stirng в char[] и обратно. NUMERIC и DECIMALТиповете NUMERIC и DECIMAL са подобни. И двата
представят числа с фиксирана точка,
като и при двата прецизността е посочена.
Най-близката алтернатива предложена
от Джава на този MySql тип е java.math.BigDecimal.
Този Джава тип осигурява математически
операции, за да може типът BigDecimal да бъде
добавян, изваждан, умножаван или делен
с другите BigDecimal типове, с Integer и
Float. BINARY, VARBINARY и LONGVARBINARYТова са отново подобно типове MySql данни. BINARY представлява малка, с фиксирана дължина бинарна стойност, VARBINARY - такава с променлива дължина докато при LONGVARBINARY стойността е с голяма дължина. При Джава няма нужда да бъдат разграничавани тези типове и всички могат да бъдат представени с масив от байтове. Възможно е да се чете и записва SQL стойност коректно бе да е известен точния BINARY тип. Методът ResultSet.getBytes се използва за взимане на стойностите от DECIMAL и NUMERICAL. Също така, когато типовете LONGVARCHAR и LONGVARBINARY са използвани за съхранение на големи по обем стойности, методът getBinaryStream се препоръчва. BITТипът BIT в MySQL представлява еднобитова стойност, която може да има стойност 1 или 0. Съответстващия тип в Джава е boolean. TINYINT, SMALLINT, INTEGER и BIGINTТипът TINYINT в MySQL представлява 8-битова числова стойност между 0 и 255, която може да бъде означена или не означена. SMALLINT представлява 16-битова числова стойност между -32768 и 32767. INTEGER е 32 битова числова стойност между -2147483648 и 2147483647. BIGINT представлява 64-битова числова стойност между -9223372036854775808 и 9223372036854775807. Тези типове в MySQL съответстват в Джава на byte, short, int и long. REAL, FLOAT и DOUBLEТипът REAL в MySQL представлява число с един знак след запетайката, докато FLOAT и DOUBLE се отнасят до такива с два знака. Съответствието на REAL в Джава е float, а на FLOAT и DOUBLE е double. DATE, TIME и TIMESTAMPТези три типа в MySql обозначават време.
Типът DATА представлява дата, която е
сътавена от ден, месец и година, стойностите
на TIME са час, минута и секунда, а на
TIMESTAMP - DATE + TIME + стойност в наносекунди.
Стандартния клас java.util.Date в Джава
осигурява информация за времето, но
няма пълно съответствие в MySql типовете,
защото липсва информация за
наносекундите.
|