首页 > 数据库 > 国内数据库 > GBase8s .net简介(二)
使用 GBase 8s .NET Provider,不指定数据库就可以连接到服务器。使用 GBASE Data Server .NET Provider 时, database 为必需的属性。
GBase 8s .NET Provider 允许指定数据库属性的值,格式为 dbname@server。 GBASE Data Server .NET Provider 不支持此格式。
GBase 8s .NET Provider 支持用引号括起的数据库、服务器和密码关键字值。
使用 GBASE Data Server .NET Provider 的应用程序仅可以在指定目录连接别名的情况下,通过以引号括起的方式为数据库和密码关键字指定值。
对于此属性,GBase 8s .NET Provider 返回值 Gbasedbt。 GBASE Data Server .NET Provider 会返回从它所连接的数据库服务器接收到的值。例如,如果提供程序连接到安装在 UNIX 64 位系统上的 GBase 8s 数据库服务器,该提供程序可能会返回 IDS/UNIX64。
GBASE Data Server .NET Provider 不允许访问 LIST、MULTISET、SET 或 ROW 数据类型。
使用 GBase 8s .NET Provider,可以选择和返回 LIST、MULTISET 和 ROW 数据类型的值。
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();
下表对比了较不常见的 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 |
支持 |
有限支持。 |
使用 GBase 8s .NET Provider,应用程序可以 ReturnValue 参数的方式来读取存储过程或函数的返回值。
使用 GBASE Data Server .NET Provider,应用程序在缺省情况下可以数据阅读器的方式来读取存储过程或函数的返回值。要将其作为 ReturnValue 参数读取,应用程序必须将 IfxCommand 或 IfxConnection 对象中的 ResultSetAsReturnValue 参数设置为 true。要将其作为 ReturnValue 参数读取,应用程序必须将 IfxCommand 或 IfxConnection 对象中的 ResultSetAsReturnValue 属性设置为 true。
以下查询为样本 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();
如果底层值为空,GBASE Data Server .NET Provider 不允许使用 IfxDataReader.GetString() 方法。空值会引发 InvalidCast 异常。此行为与 GBase 8s .NET Provider 相反,GBase 8s .NET Provider 允许空值并会返回空字符串。
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/ ,如需转载,请注明出处,否则将追究法律责任。