加载中…
个人资料
吴超
吴超
  • 博客等级:
  • 博客积分:0
  • 博客访问:26,780
  • 关注人气:211
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Sql2000、Json、delphiXE、Sqlite3数据库字段类型对照表[转]

(2023-12-19 11:10:48)
标签:

sql

json

sqlite3

delphixe

分类: 代码天地
Sql2000、Json、Sqlite3数据库字段类型对照表

Sql2000、Json、Sqlite3、delphiXE数据库类型对照表
一、对照表及重要说明
Sql2000               Json                          delphiXE                  Sqlite3

bigint                    Int64                          ftLargeint                   BIGINT

binary                   ByteString                 ftBytes                       BINARY

bit                         Boolean                    ftBoolean                   BOOLEAN      

在Sql2000中,bit =1或0或null(默认0)。注意:bit的数值代表true(bit=1)或false(bit=0或null)。在Sqlite3中:用BOOLEAN代表,同样此时代表true或false。
代码使用时:if LFDMemT1.FieldByName('Z1111').AsBoolean=true then Memo1.Lines.Add('Sql2000的bit值为0或null,sqlite3该列打勾');  LFDMemT1.FieldByName('Z1111').AsBoolean=false then Memo1.Lines.Add('Sql2000的bit值为1,sqlite3该列没有打勾或去勾'); 而其列的返回值不是-1就是0,取决于代表的表达方式: LFDMemT1.FieldByName('Z1111').AsBoolean.ToString(false)=-1,代表:, Bit为1(比特1)返回-1;Bit为0(比特0)返回-1;Bit为null(比特null)返回-1;LFDMemT1.FieldByName('Z1111').AsBoolean.ToString(true)=0 ,代表: Bit为1(比特1)返回0;Bit为0(比特0)返回0;Bit为null(比特null)返回0。它们是恒等式,代表该字段占一个比特位,无实际意义,只是对返回值的表达方式不同而已。

char                      AnsiString                 ftString                      CHAR

datetime               DateTimeStamp        ftTimeStamp             DATETIME   

decimal                 BCD                          ftFMTBcd                 DECIMAL  //:   当decimal=null时, DECIMAL=null,  ftFMTBcd为''  :LFDMemT1.FieldByName('Z1111').AsString=''

float                       Double                      ftFloat                       FLOAT

image                    Blob                          ftBlob                        IMAGE   //:中间值转化::用流和内存流做转化

int                          Int32                         ftInteger                    INT

money                   Currency                  ftCurrency                 MONEY        (精度+小数 Json "Precision":19,"Scale":4,)

nchar                     WideString               ftWideString              NCHAR

ntext                       WideMemo              ftWideMemo             NTEXT

numeric                  BCD                         ftFMTBcd                 DECIMAL    //:  NUMERIC当成:DECIMAL处理

nvarchar                 WideString              ftWideString              NVARCHAR

real                         Single                      ftSingle                     REAL

smalldatetime        DateTimeStamp       ftTimeStamp            TIMESTAMP

smallint                  Int16                         ftSmallint                 SMALLINT

smallmoney           Currency                  ftCurrency               SMALLMONEY

sql_variant             WideString               ftWideString            NVARCHAR2  // : sql_variant类型在SQLServer中是特殊的数据类型, 也是变长的数据类型,包含两部分信息:基础类型和Value,可以存储所有的SQLServer数据类型的数据,引用时需转化:convert( NVarchar( len([FieldName].Value) ) , [FieldName].Value )

text                         Memo                      ftMemo                    TEXT

timestamp              ByteString               ftBytes                      TIMESTAMP

  //Memo1.Lines.Add('sql2000远程timestamp类型:delphi不支持解析:对于每个表来说是唯一的、自动存储的值。通常用于版本戳,该值在插入和每次更新时自动改变');//12:sql2000的timestamp:ftBytes:

tinyint                      Byte                        ftByte                       INT(1)  // : sql2000中代表0~255的ASC码而非码值

uniqueidentifier      GUID                       ftGuid                       UNIQUEIDENTIFIER

                    //:35:ftGuid,sql2000远程类型,数值: :无默认值数值自定义:固定格式32位5个分组的SHA1数字:{00000000-0000-0110-0000-000000000000}
                      //:35:ftGuid:到sqlite3本地类型,数值:{00000000-0000-0000-0000-000000000000}:默认值:固定格式32位5个分组的SHA1数字

varbinary                ByteString               ftVarBytes                VARBINARY

varchar                   AnsiString               ftString                     VARCHAR

二、数据库Sql2000及Sqlite3所有字段类型
Sql2000
bigint、binary、bit、char、datetime、decimal、float、image、int、
money、nchar、ntext、numeric、nvarchar、real、
smalldatetime、smallint、smallmoney、sql_variant、
text、timestamp、tinyint、uniqueidentifier、varbinary、varchar

Sqlite3
BIGINT、BINARY、BLOB、BLOB_TEXT、BOOL、BOOLEAN、
CHAR、CLOB、CURRENCY、
DATE、DATETEXT、DATETIME、DEC、DECIMAL、DOUBLE、DOUBLE PRECISION、
FLOAT、GRAPHIC、GUID、
IMAGE、INT、INT64、INTEGER、LARGEINT、
MEMO、MONEY、
NCHAR、NVARCHAR、NVARCHAR2、NTEXT、NUMBER、NUMERIC、
PHOTO、PICTURE、RAW、
REAL、SMALLINT、SMALLMONEY、TEXT、TIME、TIMESTAMP、TINYINT、
UNIQUEIDENTIFIER、VARBINARY、VARCHAR、VARCHAR2、WORD

关于Sqlite3的数据类型,可参考以下两位作者的原创:

https://blog.csdn.net/wulianghuan/article/details/11197743

https://www.cnblogs.com/findumars/p/7854338.html

三、关于Sqlite3中的null
        if LDestinctFDQuery1.FindField('Z1111')<>nil then
        begin
          Memo1.Lines.Add(VarToStr(LFDMemT1.FindField('Z1111').DataType)+',sql2000远程类型,数值:'+LFDMemT1.FindField('Z1111').AsString.Trim);
          //Memo1.Lines.Add('sql2000远程timestamp类型:delphi不支持解析:对于每个表来说是唯一的、自动存储的值。通常用于版本戳,该值在插入和每次更新时自动改变');//12:sql2000的timestamp:ftBytes:
          if LFDMemT1.FindField('Z1111').DataType=ftTimeStamp then
          Memo1.Lines.Add(VarToStr(LFDMemT1.FindField('Z1111').DataType)+',sql2000远程数值:'+FormatDateTime('yyyy-mm-dd hh:mm:ss.zzz',LFDMemT1.FindField('Z1111').AsDateTime) );
        end;
        if LDestinctFDQuery1.FindField('Z1111')<>nil then
        begin
          Memo1.Lines.Add(VarToStr(LDestinctFDQuery1.FindField('Z1111').DataType)+':sqlite3本地类型,数值:'+LDestinctFDQuery1.FindField('Z1111').AsString.Trim);
          if LDestinctFDQuery1.FindField('Z1111').AsString<>'' then
          begin
            //:sqlite3中null是一种特殊类型:
              //:不代表数值为空,而是有值的:AsString<>''判断不出数值为空!!你是取不出来的
            if LDestinctFDQuery1.FindField('Z1111').DataType=ftDateTime then
            Memo1.Lines.Add(VarToStr(LDestinctFDQuery1.FindField('Z1111').DataType)+',sqlite3本地数值:'+FormatDateTime('yyyy-mm-dd hh:mm:ss.zzz',LDestinctFDQuery1.FindField('Z1111').AsDateTime) );
          end;
        end;

 


sqlite3只是一个嵌入式数据库引擎,占用资源非常底,可以适用于Windows和Linux,而且sqlite3只是一个文件,不需要服务器进程。 sqlite3 c++ api接口只需要引用sqlite3.h头文件就行。 常用术语:表(table)、字段(column,列,

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有