ITPub博客

首页 > 数据库 > 国内数据库 > GBase8s .net简介(二)

GBase8s .net简介(二)

原创 国内数据库 作者:DMD_202007 时间:2021-05-24 09:55:19 0 删除 编辑

 

1.2.7 ConnectionString 属性中的数据库关键字

使用 GBase 8s .NET Provider,不指定数据库就可以连接到服务器。使用 GBASE Data Server .NET Provider 时, database 为必需的属性。

GBase 8s .NET Provider 允许指定数据库属性的值,格式为 dbname@server。 GBASE Data Server .NET Provider 不支持此格式。

1.2.8 ConnectionString 属性中用引号括起的字符串值

GBase 8s .NET Provider 支持用引号括起的数据库、服务器和密码关键字值。

使用 GBASE Data Server .NET Provider 的应用程序仅可以在指定目录连接别名的情况下,通过以引号括起的方式为数据库和密码关键字指定值。

1.2.9 IfxConnection.ServerType 属性

对于此属性,GBase 8s .NET Provider 返回值 Gbasedbt。 GBASE Data Server .NET Provider 会返回从它所连接的数据库服务器接收到的值。例如,如果提供程序连接到安装在 UNIX 64 位系统上的 GBase 8s 数据库服务器,该提供程序可能会返回 IDS/UNIX64。

1.2.10 SQL 语句中不支持的数据类型

GBASE Data Server .NET Provider 不允许访问 LIST、MULTISET、SET 或 ROW 数据类型。

使用 GBase 8s .NET Provider,可以选择和返回 LIST、MULTISET 和 ROW 数据类型的值。

1.2.11 BYTE 和 TEXT 数据类型

GBASE Data Server .NET Provider 可以将 Byte 和 BLOB 两种数据类型映射到 IfxBlob 数据类型。将 IfxBlob 对象作为参数绑定时,应用程序必须在参数标记后使用 ::byte 子句。此子句表明 IfxBlob 值对应一个字节列。没有 ::byte 子句时,会返回转换错误。

GBASE Data Server .NET Provider 可以将 Text 和 CLOB 两种数据类型映射到 IfxClob 数据类型。将 IfxClob 对象作为参数绑定时,应用程序必须在参数标记后使用 ::text 子句。此子句表明 IfxClob 值对应一个文本列。没有 ::text 子句时,会返回转换错误。

DB2Parameter clobParam;
 

clobParam.IfxType = IfxType.Clob;
...
cmd.CommandText = "CALL textSP(?::text)";
---
cmd.ExecuteNonQuery();

1.2.12 支持的数据类型

下表对比了较不常见的 GBase 8s 数据类型,以及每个 .NET 提供程序对这些数据类型的支持情况。

表 2. .NET 提供程序对不常见 GBase 8s 数据类型的支持差异

GBase    8s 数据类型

GBase    8s .NET Provider

GBASE    Data Server .NET Provider

CLOB   和 BLOB

支持

有限支持。大小限制为 2 GB。

Collection

支持

不支持

Interval   DayToFraction

支持。此类型必须作为字符串读取。

不支持

IntervalMonth

支持

不支持

LIST

支持

不支持

MONEY

支持

Money   将被视为十进制数据类型。

MULTISET

支持

不支持

ROW

支持

不支持

SET

支持

不支持

对比类和结构

下表对比了 .NET 提供程序对数据类型类和结构的支持差异。

表 3. .NET 提供程序对数据类型类和结构的支持差异

类/结构

GBase    8s .NET Provider

GBASE    Data Server .NET Provider

IfxBlob

支持

有限支持。某些方法返回 NotImplemented 异常。

IfxClob

支持

有限支持。某些方法返回 NotImplemented 异常。

IfxTimeSpan

支持

不支持

IfxMonthSpan

支持

不支持

IfxSmartLOBLocator

支持

不支持

IfxSmartLOB

支持

不支持

IfxDecimal

支持

有限支持。某些方法返回 NotImplemented 异常。

IfxDateTime

支持

有限支持。

1.2.13 存储过程差异

使用 GBase 8s .NET Provider,应用程序可以 ReturnValue 参数的方式来读取存储过程或函数的返回值。

使用 GBASE Data Server .NET Provider,应用程序在缺省情况下可以数据阅读器的方式来读取存储过程或函数的返回值。要将其作为 ReturnValue 参数读取,应用程序必须将 IfxCommand 或 IfxConnection 对象中的 ResultSetAsReturnValue 参数设置为 true。要将其作为 ReturnValue 参数读取,应用程序必须将 IfxCommand 或 IfxConnection 对象中的 ResultSetAsReturnValue 属性设置为 true。

1.2.14 IfxCommand.ExecuteScalar() 方法

以下查询为样本 SELECT 查询。

Cmd.CommandText = "SELECT COUNT(*) FROM Tab";

返回的数据类型取决于您所使用的 .NET 提供程序:

GBase 8s .NET Provider

使用 GBase 8s .NET Provider 时,此查询返回的计数为十进制类型。

Decimal count = (Decimal) Cmd.ExecuteScalar();

GBASE Data Server .NET Provider

使用 GBASE Data Server .NET Provider 时,此查询返回的计数为 Int32。

Int32 count = (Int32) Cmd.ExecuteScalar();

1.2.15 IfxDataReader.GetString() 方法

如果底层值为空,GBASE Data Server .NET Provider 不允许使用 IfxDataReader.GetString() 方法。空值会引发 InvalidCast 异常。此行为与 GBase 8s .NET Provider 相反,GBase 8s .NET Provider 允许空值并会返回空字符串。

1.2.16 错误消息

GBASE Data Server .NET Provider 接收到的某些错误消息与 GBase 8s .NET Provider 接收到的错误消息可能存在差异。例如,GBase 8s .NET Provider 的错误消息中有 [GBase 8s .NET provider] 这样的标记。而 GBASE Data Server .NET Provider 的错误消息中只有 [GBASE] 。 此外,相同类型错误的错误代码可能也不同。

 

官网:

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980677/viewspace-2773582/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-07-31

  • 博文量
    36
  • 访问量
    31943