查询返回值时,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中执行它时,这是返回的值。

Query result

这是我的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 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结果

Query result

我第一个离开的查询返回的错误是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)