Delphi数据类型与各数据库数据类型对比如下表,如有具体说明见表中脚注:
DelphiType | OracleTypes | SQLServerTypes | MySQLTypes[1] | InterBaseTypes | PostgreSQLTypes | SQLiteTypes |
ftSmallint | NUMBER(p,0)[2] | SMALLINT | TINYINT(M)(M>1) | SMALLINT | SMALLINT | TINYINT |
ftWord | - | TINYINT | TINYINT(M)UNSIGNED(M>1) | - | - | - |
ftInteger | NUMBER(p,0)[2] | INT | MEDIUMINT | INTEGER | INTEGER | INTEGER |
ftLargeint | NUMBER(p,0)[2] | BIGINT | BIT | BIGINT | BIGINT | BIGINT |
ftFloat | NUMBER(p,s)[2] | DECIMAL(p,s)[3] | DECIMAL(p,s)[3] | NUMBER(p,s)[3] | DECIMAL[3] | DECIMAL(p,s)[3] |
ftBCD | NUMBER(p,s)[2] | DECIMAL(p,s)[3] | DECIMAL(p,s)[3] | DECIMAL(p,s)[3] | DECIMAL[3] | DECIMAL[3] |
ftFMTBcd | NUMBER(p,s)[2] | DECIMAL(p,s) | DECIMAL(p,s)[3] | DECIMAL(p,s)[3] | DECIMAL[3] | DECIMAL[3] |
ftCurrency | - | MONEY | - | - | MONEY | MONEY |
ftBoolean | - | BIT | BOOLEAN | BOOLEAN | BOOLEAN | |
ftString | VARCHAR2 | CHAR | CHAR | CHAR | CHAR | |
ftWideString | NCHAR | |||||
ftMemo | LONG | TEXT | TINYTEXT | BLOBTEXT | TEXT | TEXT |
ftWideMemo | NTEXT[11] | |||||
ftOraClob | CLOB | - | - | - | - | - |
ftBlob | LONGRAW | IMAGE | TINYBLOB | BLOBBINARY | BYTEA | BLOB |
ftOraBlob | BLOB | - | - | - | LARGEOBJECT | - |
ftBytes | - | BINARY | BINARY | - | - | - |
ftVarBytes | RAW | VARBINARY | VARBINARY | CHAR | - | BINARY |
ftDate | - | - | DATE | DATE | DATE | DATE |
ftDateTime | DATE | DATE | DATETIME | TIMESTAMP | TIMESTAMP | TIMESTAMP |
ftTime | - | - | TIME | TIME | TIME | TIME |
ftTimeStamp | TIMESTAMP | - | - | - | - | - |
ftCursor | REFCURSOR | - | - | - | REFCURSOR | - |
ftGuid | - | UNIQUEIDENTIFIER | - | - | - | - |
ftVariant | - | SQL_VARIANT | - | - | - | - |
NOTSUPPORTED | BFILE | CURSOR | - | - | - | - |
[1]–如果FieldsAsString选项被设置True,则除BLOB和TEXT数据类型外,全部做为ftString来处理
[2]–OracleNUMBER数据类型与Delphi数据类型对应方式:
ifscaleequalszero,providerchecksvaluesofthespecificoptionstochoosethecorrectDelphitypeinthefollowingorder:
1.1fieldprecisionislessorequalPrecisionSmallint(defaultis4)-usesftSmallint;
1.2fieldprecisionislessorequalPrecisionInteger(defaultis9)-usesftInteger;
1.3fieldprecisionislessorequalPrecisionLargeInt(defaultis18)-usesftLargeint;
ifscaleisgreaterthanzero,theappropriateDelphitypeischosenusingthefollowingsequenceofrules:.
2.1fieldprecisionislessorequalPrecisionFloat(defaultis0)-usesftFloat;
2.2EnableBCDisTrueandfieldprecision,scaleislessorequalPrecisionBCD(defaultis14,4)-usesftBCD;
2.3EnableFMTBCDisTrueandfieldprecision,scaleislessorequalPrecisionFMTBCD(defaultis38,38)-usesftFMTBCD;
2.4usesftFloat.
[3]-TheappropriateDelphitypeischosenusingthefollowingsequenceofrules:
EnableBCDisTrueandfieldprecision,scaleislessorequal14,4-usesftBCD;
EnableFMTBCDisTrue-usesftFMTBCD;
usesftFloat.
[4]-IftheEnableBooleanoptionisTrue
[5]-IftheRawAsStringoptionisTrue
[7]-IftheUseUnicodeoptionisTrue,allservertypesmappedtoftStringwillbemappedtoftWideString.
[8]-IftheLongStringsoptionisFalse,andthefieldlengthisgreaterthan255,allservertypesmappedtoftStringwillbemappedtoftMemo.
[9]-ForallDelphiversionspriortoBDS2006.
[10]-IftheUseUnicodeoptionisTrue,inBDS2006andlaterversionsallservertypesmappedtoftMemowillbemappedtoftWideMemo.