c# - 当查询返回值时,OleDbCommand.ExecuteScalar 返回 null
问题描述
我在使用 OleDbCommand.ExecuteScalar() 时遇到问题。
这是我的查询。
SELECT SUM(gobg.quan / d.coef) as quan
FROM ((N_GOODS_EXTCODES AS nge
INNER JOIN DRUGS AS d ON nge.ec_NZOK20190816 = d.DrugCode)
INNER JOIN N_GOODS AS ng ON nge.good_code = ng.code)
INNER JOIN G_OBGS AS gobg ON ng.smg_id = gobg.smg_id
WHERE nge.ec_NZOK20190816 = "AF063" AND gobg.part_num LIKE 'KR72K35*' ;
当我在 MS ACCESS 中执行它时,这是返回的值。
这是我的 C# 代码
public double getGoodQuan(string goodCode, string goodPart, string pharmNzokList)
{
double result = 0;
using (OleDbConnection con = new OleDbConnection(connectionStringBuffer))
{
try
{
con.Open();
using (OleDbCommand cmd = new OleDbCommand(Queries.getGoodQuan(goodCode, goodPart, pharmNzokList), con))
{
result = Convert.ToDouble(cmd.ExecuteScalar());
}
}
catch (Exception ex)
{
Program.ErrorLog(ex.Message, this.GetType().Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name);
}
finally
{
con.Close();
}
}
return result;
}
public static string getGoodQuan(string goodCode, string goodPart, string pharmNzokList)
{
string result = "SELECT SUM(gobg.quan / d.coef) " +
"FROM ((N_GOODS_EXTCODES AS nge " +
"INNER JOIN DRUGS AS d ON nge." + pharmNzokList + " = d.DrugCode) " +
"INNER JOIN N_GOODS AS ng ON nge.good_code = ng.code) " +
"INNER JOIN G_OBGS AS gobg ON ng.smg_id = gobg.smg_id " +
"WHERE nge." + pharmNzokList + " = \"" + goodCode + "\" " +
"AND gobg.part_num LIKE '" + goodPart + "*' " +
";";
return result;
}
在 cmd.ExecuteScalar() 结果之后为空。
我尝试过使用字符串、双精度、对象,结果是一样的。
在同一个项目中,我使用相同的代码,但查询不同,它正在工作。
这是有效的查询。
SELECT SYS_PHARMA.pharm_nzok_list FROM SYS_PHARMA;
这是 MS ACCESS 结果
我在第一个返回 null 的查询时做错了什么?
解决方案
我发现问题出在哪里。
在 WHERE 子句中,我在文本末尾使用 LIKE 运算符,*
因为我想搜索以该文本开头的所有内容(如 MS Access 文档所述)。
gobg.part_num LIKE 'KR72K35*'
然后我改成*
它%
,它起作用了!ExecuteScalar() 返回正确的值!
gobg.part_num LIKE 'KR72K35%'
推荐阅读
- java - Firebase 中的 getValue() 方法是什么?
- angular - Angular 6 UI Router 类解析器
- node.js - 无法在节点中使用表单数据插入数据
- sql-server - SQL Server - 在 XML.value() 中使用隐式 SQL 变量时出错
- android - Proguard 抛出 customtabs 警告和失败的构建
- android - 具有(字符串)奇怪行为的 Kotlin
- javascript - 计算在 XML 文件中有多少父节点具有相同的标记“值”
- linux - 如何在不知道 EFI 系统表的情况下找到 MCFG 表?
- java - 在 Java 中使用 Stringbuilder 读取一个巨大的文本文件并附加
- php - Apache 将 REMOTE_USER 转发到 php 以使用 NTLM 进行 SSO