神通数据类型概述¶
c++程序与神通数据库服务器之间的准确通信至关重要。ACCI应用程序可以使用SQL查询从数据库表检索数据,也可以使用SQL INSERT、UPDATE和DELETE函数修改现有数据。为了方便宿主语言c++和数据库服务器之间的通信,您必须了解c++数据类型如何转换为神通数据类型,和来回转换。
在神通数据库中,值存储在表中的列中。在内部,神通以内部数据类型的特殊格式表示数据。神通内部数据类型:NUMBER, VARCHAR2,DATE等等。
ACCI应用程序使用主机语言的数据类型,或由主机语言预定义的外部数据类型。当数据在ACCI应用程序和数据库服务器之间传输时,数据库中的数据将从内部数据类型转换为外部数据类型。
ACCI类型和数据转换¶
ACCI定义了一个称为Type的枚举器,它列出了ACCI应用程序中可用的数据表示格式。这些表示格式称为外部数据类型。当数据从ACCI应用程序发送到数据库服务器时,外部数据类型指示数据库服务器期望的数据格式。当ACCI应用程序从数据库服务器请求数据时,外部数据类型指示要返回的数据的格式。
例如,在从NUMBER列检索值时,程序可以设置为以ACCIINT格式检索值(将有符号整数格式转换为整数变量)。或者,可以将客户端设置为以ACCIFLOAT格式(浮点格式)发送数据,该格式存储在一个c++浮点变量中,要插入一个NUMBER类型的列中。
ACCI应用程序通过调用setxxx()方法(外部数据类型由方法名隐式指定),或调用registerOutParam()、setDataBuffer()方法(外部数据类型在方法调用中显式指定),将输入参数绑定到语句。类似地,当通过ResultSet对象获取数据值时,必须指定所检索数据的外部表示形式。这可以通过调用getxxx()方法(外部数据类型由方法名隐式指定)或调用setDataBuffer()方法(外部数据类型在方法调用中显式指定)来实现。
注意,外部数据类型比内部数据类型多。在某些情况下,一个外部数据类型映射到一个内部数据类型;在其他情况下,许多外部数据类型映射到单个内部数据类型。多对一映射为您提供了更多的灵活性。