Database field type/zh CN
│
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
中文(中国大陆) (zh_CN) │
概述
FCL-DB数据库字段可以有不同的数据类型。在数据集中,可以使用这些类型的子集。不同的数据使用不同的数据类型。
类型
目前,有下字段类型定义:
参见 FCL 字段类型文档
To do: 新增分配信息(例如,您可以使用.AsString)及以下的附加信息。
类型 | 说明 |
---|---|
ftADT | ADT 值 |
ftArray | 数组数据,代表 Interbase 6/Firebird 数组数据类型(简单的数组类型像varchar 或整型)。然而,SQLDB目前不支持数组数据类型。 |
ftAutoInc | 自增整数值(4字节) |
ftBCD | 二进制编码的十进制值(SQL的decimal和numeric类型) |
ftBlob | 二进制大对象(BLOB),用于存储任意二进制数 |
ftBoolean | 布尔值 |
ftBytes | 字节值数组,固定大小 |
ftCurrency | 货币数值,精确到小数点后4位 |
ftCursor | 游标数据无大小) |
ftDataSet | 数据集数据(blob),大概意思是存储整个数据集(可能实现主/详细表格) |
ftDate | 日期值 |
ftDateTime | 日期/时间(时间戳) |
ftDBaseOle | Paradox OLE字段数据 |
ftFMTBcd | 格式化的BCD(二进制编码的十进制)值 |
ftFixedChar | 固定字符数组(字符串) |
ftFixedWideChar | 定长字符日期(每个字符2个字节) |
ftFloat | 浮点值(双) |
ftFmtMemo | 格式化的memo数据(无大小) |
ftGraphic | 图形数据(无大小) |
ftGuid | GUID(Globally Unique Identifier全局唯一标识符)数据 |
ftIDispatch | Dispatch data value |
ftInteger | 整型(4字节,有符号) |
ftInterface | 接口数据 |
ftLargeint | 长整型(8字节) |
ftMemo | 二进制文本数据(无大小) |
ftOraBlob | Oracle BLOB 数据 |
ftOraClob | Oracle CLOB 数据: 可以存储高达 4 GB 数据 [1] |
ftParadoxOle | Paradox OLE字段类别(无大小) |
ftReference | 参考数据 |
ftSmallint | 短整型(1字节,有符号) |
ftString | 字符串数据(ansistring) |
ftTime | 时间值 |
ftTimeStamp | 时间戳数据 |
ftTypedBinary | 二进制类型数据(无大小) |
ftUnknown | 未知数据类型 |
ftVarBytes | 字节数组,可变大小(untyped) |
ftVariant | Variant 数据 |
ftWideMemo | 宽字符串 memo 类型 |
ftWideString | 宽字符串(每字符占2字节) |
ftWord | Word-sized value(2 bytes, unsigned) |
大小,数据大小和Unicode
请注意,对于字符串类型字段,大小指可存储的字符数目。 正如FPC Unicode 支持,FPC包括2.6只处理 ANSI/ASCII 单字节字符; 它不支持 Unicode/UTF8/UTF16/Unicodestring 字符。
只读属性的 DataSize 表示以字节为单位的字段大小。
如果使用多字节字符(如 UTF8 或 UTF16/Unicodestring 编码),DataSize和Size并不意味着相同。如果仅使用 ANSI/ASCII 字符, DataSize 和 Size 将相同。
在数据集中定义类型
Todo: write me. Explain various ways of doing things (TFieldDef, TFields) and which dataset supports which methods.
赋值和取值
一旦定义你的数据集字段,你就可以进行赋值取值操作,像这样的,假设你有一个 FTestDataset 的数据集:
FTestDataset.Open; // 打开进行查看/编辑/插入
FTestDataset.Append;
FTestDataset.Fieldbyname('YourFieldName').Asstring := 'This is my field data'; // 假设 YourFieldName 是 memo 字段
FTestDataset.Post; // "提交"/保存更改记录到数据集
writeln('YourFieldName has data:' + FTestDataset.Fieldbyname('YourFieldName').Asstring
{ 获取当前记录的字段值。因为我们还没有移动的记录,我们应该得到什么,我们刚刚进入 }
为 text/memo 字段,使用AsString 方法。 为 date/time 字段,使用 AsDateTime 方法。 为 binary 字段,我想你可以使用 AsString 方法 - 但一定还有其他办法。