数据库数据类型映射
数据库组件保持一个在每个Gambas数据类型与基础数据库驱动的每个数据类型之间的映射。
当然,这个映射不是双向的。往往一个Gambas数据类型在数据库系统中不存在,而且更经常是矛盾的。
由于映射,当设计你的数据库时必须非常小心。如果你不想出任何问题,确保总是使用Gambas提供数据库管理器。
Beware with the NULL SQL value!
In Gambas, NULL and the void string are the same thing, but usually it's not in database servers.
Gambas always stores NULL in the database, never a void string, and you must take that into account when writing
your SQL requests.
For example, don't do:
SELECT * FROM table WHERE name = '';
But do:
SELECT * FROM table WHERE name IS NULL;
No solution has been found to handle that automatically yet.
MySQL
下面是MySQL数据库驱动的映射:
Gambas数据类型
|
MySQL数据类型
|
缺省使用的数据类型
|
Boolean
|
BOOL
TINYINT (长度= 1)
|
BOOL
|
Integer
|
TINYINT (长度> 1)
SMALLINT
MEDIUMINT
INT
YEAR
|
INT
|
Long
|
BIGINT
|
BIGINT
|
Serial
|
INT UNSIGNED NOT NULL AUTO_INCREMENT
BIGINT UNSIGNED NOT NULL AUTO_INCREMENT
|
BIGINT UNSIGNED NOT NULL AUTO_INCREMENT
|
Float
|
FLOAT
DOUBLE
DECIMAL
REAL
NUMERIC
|
DOUBLE
|
Date
|
TIMESTAMP
DATE
TIME
DATETIME
|
DATETIME
|
Blob
|
LONGBLOB
LONGTEXT
BLOB (长度>= 16777216)
TEXT (长度>= 16777216)
|
TEXT
|
String
|
VARCHAR
BLOB (长度< 16777216)
TEXT (长度< 16777216)
其他全部。
|
VARCHAR 如果长度<= 255.
TEXT 其他。
|
MySQL对于blob或text字段没有不同。所以Gambas依赖字段的长度来决定一个字段是text还是blob。
PostgreSQL
下面是PostgreSQL数据库驱动的映射:
Gambas数据类型
|
PostgreSQL数据类型
|
缺省使用的数据类型
|
Boolean
|
BOOL
|
BOOL
|
Integer
|
INT2
INT4
INT
|
INT
|
Long
|
INT8
BIGINT
|
BIGINT
|
Serial
|
BIGSERIAL
|
BIGSERIAL
|
Float
|
NUMERIC
FLOAT4
FLOAT8
|
FLOAT8
|
Date
|
ABSTIME
RELTIME
DATE
TIME
TIMESTAMP
DATETIME
TIMESTAMPTZ
|
TIMESTAMP
|
Blob
|
BYTEA
|
BYTEA
|
String
|
CHAR
BPCHAR
VARCHAR
TEXT
NAME
CASH
其他全部。
|
VARCHAR
TEXT 无限制字符串字段。
|
SQLite
下面是SQLite数据库驱动的映射:
Gambas数据类型
|
SQLite数据类型
|
缺省使用的数据类型
|
Boolean
|
CHAR
TINYINT
INT1
BOOL
|
BOOL
|
Integer
|
SMALLINT
INT2
MEDIUMINT
INT
INT4
|
INT4
|
Long
|
INT8
BIGINT
|
BIGINT
|
Serial
|
INTEGER
|
INTEGER AUTOINCREMENT
|
Float
|
DECIMAL
NUMERIC
DOUBLE
FLOAT8
REAL
FLOAT
FLOAT4
|
FLOAT8
|
Date
|
DATE
TIME
TIMESTAMP
DATETIME
|
DATETIME
|
Blob
|
BLOB
|
BLOB
|
String
|
CHAR()
CLOB
TEXT
VARCHAR
ENUM
SET
YEAR
其他全部。
|
VARCHAR
TEXT 无限制字符串字段。
|
ODBC