サポート対象データベースの dbExpress データ型マッピング
Win32 プラットフォーム向けのデータベース アプリケーションの開発:インデックス への移動
サポートされている各種データベースのデータ型は dbExpress のデータ型にマッピングされます。dbExpress では、該当する場合、以下のものが提供されます。
- データベースによらない一貫性のあるデータ型マッピング
- dbExpress の型にマッピングされる論理データ型
データ型の使用法
dbExpress には、さまざまな論理データ型が組み込まれています。dbExpress では、Adaptive Server Anywhere、DB2、Informix、InterBase、MS SQL Server、MSDE、MYSQL、Oracle、Sybase 用の論理データ型マッピングをサポートしています。
マッピング テーブルには、特に明記された場合を除き、データベースとの間でやり取りできるデータ型が示されています。これらのマッピングは機能しますが、他のマッピングが可能な場合もあります。テーブルのクエリを行う際に、データベースがデフォルトでこれらの型を異なる型にマッピングする場合があります。たとえば、Geometry 型はデフォルトで TDBXDataTypes.VarBytesType 型フィールドを返します。
たとえば以下のようなクエリを行ったとすると、
Select * from table
一般的には、マッピング テーブルに示されている型のデータを取得することになります。
時には、返される型を指定したい場合もあるでしょう。たとえば、geometry 型の列 geometryCol を持つテーブルがあった場合、以下のようなクエリを実行して
Select geometryCol.ToString() from table
データを文字列として取得し、そのデータのマッピング済みデータ型を取得しないようにすることができます。
また、データベースに送信するデータをパラメータで指定することもできます。たとえば、テーブルに int 型の列 intCol と geometry 型の列 geometryCol がある場合、以下のようなステートメントを使用することができます。
insert into table (intCol, geometryCol) values (?, ?)
そして、パラメータ値をたとえば 3, 'Point(1 1)' のように指定することができます。
InterBase
dbExpress には、InterBase 2020(ToGo Edition を含む)用のデータ型マッピングが用意されています。dbExpress と InterBase 2020 の間のデータ型マッピングは以下のとおりです。
InterBase の型 | dbExpress の型 |
---|---|
integer | TDBXDataTypes.Int32Type |
smallint | TDBXDataTypes.Int16Type |
blob | TDBXDataTypes.BlobType |
blob sub_type text | TDBXSubDataTypes.MemoSubType または TDBXSubDataTypes.WideMemoSubType(UTF-8 データベースの場合)をサブタイプとする TDBXDataTypes.BlobType |
numeric | TDBXDataTypes.BcdType |
decimal | TDBXDataTypes.BcdType |
float | TDBXDataTypes.DoubleType |
double precision | TDBXDataTypes.DoubleType |
date | TDBXDataTypes.DateType |
time | TDBXDataTypes.TimeType |
timestamp | TDBXDataTypes.TimeStampType |
boolean | TDBXDataTypes.BooleanType |
char | TDBXDataTypes.WideStringType(サーバーが UTF-8 を使用している場合)または TDBXDataTypes.AnsiStringType(それ以外の場合) |
varchar | TDBXDataTypes.WideStringType(サーバーが UTF-8 を使用している場合)または TDBXDataTypes.AnsiStringType(それ以外の場合) |
MS SQL と MSDE
dbExpress は、Microsoft SQL 2008 のすべてのデータ型をサポートしています。Microsoft SQL と MSDE のデータ型マッピングは以下のとおりです。
Microsoft SQL の型 | dbExpress の型 |
---|---|
int | TDBXDataTypes.Int32Type |
bigint | TDBXDataTypes.Int64Type |
smallint | TDBXDataTypes.Int16Type |
tinyint | TDBXDataTypes.UInt8Type |
char | TDBXDataTypes.AnsiStringType |
varchar | TDBXDataTypes.AnsiStringType |
text | TDBXSubDataTypes.MemoSubType をサブタイプとする TDBXDataTypes.BlobType |
nchar | TDBXDataTypes.WideStringType |
nvarchar | TDBXDataTypes.WideStringType |
ntext | TDBXSubDataTypes.WideMemoSubType をサブタイプとする TDBXDataTypes.BlobType |
geometry | TDBXDataTypes.AnsiStringType。パラメータを使用する場合、この型を採用。データベースは、TDBXDataTypes.VarBytesType を返す。 |
geography | TDBXDataTypes.AnsiStringType。パラメータを使用する場合、この型を採用。データベースは、TDBXDataTypes.VarBytesType を返す。 |
money | TDBXDataTypes.BcdType |
smallmoney | TDBXDataTypes.BcdType |
float | TDBXDataTypes.DoubleType |
real | TDBXDataTypes.DoubleType |
decimal | TDBXDataTypes.BcdType |
numeric | TDBXDataTypes.BcdType |
xml | TDBXDataTypes.WideStringType |
sysname | TDBXDataTypes.WideStringType |
date | TDBXDataTypes.DateType |
time | TDBXDataTypes.TimeType |
datetime | TDBXDataTypes.TimeStampType |
datetime2 | TDBXDataTypes.TimeStampType |
smalldatetime | TDBXDataTypes.TimeStampType |
datetimeoffset | TDBXDataTypes.TimeStampOffsetType |
binary | TDBXDataTypes.BytesType |
varbinary | TDBXDataTypes.VarBytesType |
image | TDBXSubDataTypes.BinarySubType をサブタイプとする TDBXDataTypes.BlobType |
bit | TDBXDataTypes.BooleanType |
hierarchyid | TDBXDataTypes.WideStringType。TDBXDataTypes.WideStringType パラメータを使用するが、データベースは TDBXDataTypes.VarBytesType を返す。 |
uniqueidentifier | TDBXDataTypes.WideStringType |
sql_variant | TDBXDataTypes.VarBytesType |
MYSQL
dbExpress には、以下の MYSQL データ型マッピングが用意されています。
MYSQL の型 | dbExpress の型 |
---|---|
int | TDBXDataTypes.Int32Type |
tinyint | TDBXDataTypes.Int8Type |
smallint | TDBXDataTypes.Int16Type |
mediumint | TDBXDataTypes.Int32Type |
bigint | TDBXDataTypes.Int64Type |
float | TDBXDataTypes.DoubleType |
double | TDBXDataTypes.DoubleType |
decimal | TDBXDataTypes.BcdType |
numeric | TDBXDataTypes.BcdType |
timestamp | TDBXDataTypes.TimeStampType |
datetime | TDBXDataTypes.TimeStampType |
date | TDBXDataTypes.DateType |
time | TDBXDataTypes.TimeType |
year | TDBXDataTypes.Int16Type |
binary | TDBXDataTypes.AnsiStringType |
varbinary | TDBXDataTypes.AnsiStringType |
tinytext | TDBXDataTypes.AnsiStringType |
text | TDBXDataTypes.AnsiStringType |
mediumtext | TDBXDataTypes.AnsiStringType |
longtext | TDBXDataTypes.AnsiStringType |
tinyblob | TDBXSubDataTypes.BinarySubType をサブタイプとする TDBXDataTypes.BlobType |
blob | TDBXSubDataTypes.BinarySubType をサブタイプとする TDBXDataTypes.BlobType |
mediumblob | TDBXSubDataTypes.BinarySubType をサブタイプとする TDBXDataTypes.BlobType |
longblob | TDBXSubDataTypes.BinarySubType をサブタイプとする TDBXDataTypes.BlobType |
bit | TDBXDataTypes.VarBytesType |
bool | TDBXDataTypes.Int8Type |
enum | TDBXDataTypes.AnsiStringType |
set | TDBXDataTypes.AnsiStringType |
char | TDBXDataTypes.WideStringType(サーバーが UTF-8 を使用している場合)または TDBXDataTypes.AnsiStringType(それ以外の場合) |
varchar | TDBXDataTypes.WideStringType(サーバーが UTF-8 を使用している場合)または TDBXDataTypes.AnsiStringType(それ以外の場合) |
Firebird
dbExpress は、現在では Firebird のすべてのデータ型をサポートしています。dbExpress と Firebird の間のデータ型マッピングは以下のとおりです。
Firebird の型 | dbExpress の型 |
---|---|
integer | TDBXDataTypes.Int32Type |
bigint | TDBXDataTypes.Int64Type |
smallint | TDBXDataTypes.Int16Type |
char | TDBXDataTypes.WideStringType(サーバーが UTF-8 を使用している場合)または TDBXDataTypes.AnsiStringType(それ以外の場合) |
varchar | TDBXDataTypes.WideStringType(サーバーが UTF-8 を使用している場合)または TDBXDataTypes.AnsiStringType(それ以外の場合) |
float | TDBXDataTypes.DoubleType |
double | TDBXDataTypes.DoubleType |
decimal | TDBXDataTypes.BcdType |
numeric | TDBXDataTypes.BcdType |
date | TDBXDataTypes.DateType |
time | TDBXDataTypes.TimeType |
timestamp | TDBXDataTypes.TimeStampType |
blob | TDBXDataTypes.BlobType |
Oracle
dbExpress は、現在では Oracle 11g のすべてのデータ型をサポートしています(新しいデータ型 XMLType、Binary_Float、および Binary_Double を含む)。 dbExpress と Oracle 11g の間のデータ型マッピングは以下のとおりです。
Oracle の型 | dbExpress の型 |
---|---|
bfile | TDBXDataTypes.BlobType |
blob | TDBXDataTypes.BlobType |
char | TDBXDataTypes.AnsiStringType |
clob | TDBXDataTypes.AnsiStringType |
date | TDBXDataTypes.TimeStampType |
float | TDBXDataTypes.BcdType |
binary_float | TDBXDataTypes.SingleType |
binary_double | TDBXDataTypes.DoubleType |
interval day to second | TDBXDataTypes.IntervalType |
interval year to month | TDBXDataTypes.IntervalType |
long | TDBXDataTypes.AnsiStringType |
long raw | TDBXDataTypes.BytesType |
nchar | TDBXDataTypes.WideStringType |
nclob | TDBXDataTypes.WideStringType |
number | TDBXDataTypes.BcdType |
nvarchar2 | TDBXDataTypes.WideStringType |
raw | TDBXDataTypes.BytesType |
timestamp | TDBXDataTypes.TimeStampType |
timestamp(ローカルのタイム ゾーン付き) | TDBXDataTypes.TimeStampType |
timestamp(タイム ゾーン付き) | TDBXDataTypes.TimeStampType |
varchar2 | TDBXDataTypes.AnsiStringType |
xmltype | TDBXDataTypes.AnsiStringType |