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有点不对劲。