Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在存储过程中使用LIKE命令_C#_Mysql_Sql_.net_Linq To Sql - Fatal编程技术网

C# 在存储过程中使用LIKE命令

C# 在存储过程中使用LIKE命令,c#,mysql,sql,.net,linq-to-sql,C#,Mysql,Sql,.net,Linq To Sql,我有一个这样的存储过程 ALTER PROCEDURE dbo.sp_CheckGlobalizationResourceValue ( @ResourceObject NVARCHAR(255), @ResourceName NVARCHAR(128) ) AS select count(*) from vpglobalizationresources where ResourceObject = @ResourceObject and Resource

我有一个这样的存储过程

ALTER PROCEDURE dbo.sp_CheckGlobalizationResourceValue
 (
   @ResourceObject NVARCHAR(255),
   @ResourceName NVARCHAR(128)
    )

AS

select count(*) from vpglobalizationresources
      where ResourceObject = @ResourceObject and 
ResourceName like '%' + @ResourceName + '%' 
我正在使用Linq到SQL类。我从上面显示的.cs文件发送ResourceObject和ResourceName。它的返回值总是0为什么?存储过程或cs类中是否有错误?我在数据库中运行了这个查询,它在那个里运行得很好

public static bool CheckGlobalizationResourceValue(string resourceObject, string resourceName)
    {
        try
        {
            using (var dataContext = new ResourceDBDataContext())
            {
                resourceObject = resourceObject.Replace(ConfigurationHelper.MainDirectory + "\\", "");
                resourceObject = resourceObject.Replace("\\", "/");
                //resourceName = string.Format("'%{0}%'", resourceName);

                var result = dataContext.sp_CheckGlobalizationResourceValue(resourceObject, resourceName);
                if ((int)result.ReturnValue == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
                //return (int)result.ReturnValue != 0;
            }
        }
        catch (Exception exception)
        {
            throw new Exception("An error occured when retrieving data from database");
        }
    }

问题可能在存储过程中。我想您需要在ResourceObject过滤中使用like语句

select count(*) from vpglobalizationresources
      where ResourceObject like @ResourceObject and 
ResourceName like '%' + @ResourceName + '%' 

@ResourceObject中的sleshes也可能有问题。只需尝试使用参数的实际值执行Select,检查是否有一些数据返回

,我还从.dbml文件中删除了存储过程,并在更改后再次添加。请给我数据和结构,以便更好地理解表…这很难说,因为我不知道是什么dataContext.sp_CheckGlobalizationResourceValue正在执行,我对LINQ不太熟悉,但基于您使用result.ReturnValue的事实,我希望您引用的是存储过程返回的内容,而不是它的结果。默认情况下,存储过程的返回值为0,除非使用类似于return 1;的内容覆盖它;。我在存储过程中通过这个查询修复了它!如果存在,请从vpglobalizationresources中选择*,其中ResourceObject=@ResourceObject和ResourceName(如“%”++@ResourceName++“%”)返回1,否则返回在.cs文件中调试并在数据库中检查其值的0I。如果我在数据库中编写查询并运行,一切都会正常工作。因此resourceobject和resourcename都具有正确的值。我认为把这个叫做.cs有点不对劲。