为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8(–03134283938-20221019-172201-20018)
【操作系统】:windows 10 64位
【CPU】:i5-10500
【问题描述】*:
【DmProvider】数据库存储char(36)字段值为null返回的却是空字符串(" ")。
版本:DmProvider.1.1.0.11058
现象:
示例代码:
var sql = "SELECT \"CREATEDGUID\" FROM p_GlobalParam LIMIT 1;";
using (var connection = new DmConnection(s_connectionString))
{
connection.Open();
DmCommand cmd = new DmCommand();
cmd.Connection = connection;
cmd.CommandText = sql;
var guidResult = cmd.ExecuteScalar();
if (guidResult !=null)
throw new InvalidCastException($"CHAR(36)类型的列值为null,但是查询出来的值为:{guidResult?.ToString()}");
}
初始sql
CREATE TABLE IF NOT EXISTS "p_GlobalParam"
(
"PARAMCODE" VARCHAR(128),
"PARAMVALUE" VARCHAR(128),
"SYSCODE" VARCHAR(128),
"CREATEDGUID" CHAR(36),
"CREATEDNAME" VARCHAR(128),
"CREATEDTIME" TIMESTAMP(0),
"GLOBALPARAMGUID" CHAR(36) NOT NULL,
"MODIFIEDGUID" CHAR(36),
"MODIFIEDNAME" VARCHAR(128),
"MODIFIEDTIME" TIMESTAMP(0),
"VERSIONNUMBER" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL) STORAGE(ON "MAIN", CLUSTERBTR);
INSERT INTO "p_globalparam" ("ParamCode", "ParamValue", "SysCode", "CreatedGUID", "CreatedName", "CreatedTime", "GlobalParamGUID", "ModifiedGUID", "ModifiedName", "ModifiedTime", "VersionNumber")
VALUES('core', '', 'SSO', NULL, NULL, '2022-01-19 17:33:01', '08d9db2e-af6a-48d4-8c18-0b0fd4e4b4d3', NULL, NULL, NULL, '2022-01-20 01:33:00');
NET60 174版本驱动 默认配置参数库未能复现问题,具体如下
建议使用最新版本驱动测试一下,此外可能需进一步确认问题库的兼容性参数,NET版本和相应驱动版本使用组合
可以看看是不是因为(CHAR)为定长字符串类型 造成的。