C# 如何将Bool(BIT)参数传递给SQLServer?

C# 如何将Bool(BIT)参数传递给SQLServer?,c#,asp.net,sql,C#,Asp.net,Sql,我在sql中有一个存储过程,它有一个位参数。我需要从c#传递参数值。有人能帮我怎么做吗。我将真/假值传递给位参数,但它不起作用 CREATE PROCEDURE checkbit @id varchar(10), @IsDeleted bit AS BEGIN IF(@IsDeleted = 1) BEGIN DELETE FROM tablename WHERE ID = @id RETURN END END 我的C代码 我正在

我在sql中有一个存储过程,它有一个位参数。我需要从c#传递参数值。有人能帮我怎么做吗。我将真/假值传递给位参数,但它不起作用

CREATE PROCEDURE checkbit
      @id varchar(10),
@IsDeleted bit
AS
BEGIN

IF(@IsDeleted = 1)
    BEGIN
        DELETE FROM tablename WHERE ID = @id

        RETURN
    END
END
我的C代码

我正在使用实体框架。在这里检查位值

bool chk;
if(val==1)
 chk=true;
else
 chk=false;
context.checkbit(id,chk)  

对于
字段,只需使用
0
1

  • 1
    对于
    TRUE
  • 0
    对于
    FALSE


如果您正在使用Ado.net,请尝试下面的方法,希望它能起作用

SqlParameter param = new SqlParameter();
             param.ParameterName = "@Isstatus";
             param.Value = Isstatus;
             param.DbType = System.Data.DbType.Boolean
             cmd.Parameters.Add(param);
实体框架

如果您的sp返回true或false,那么您可以使用下面的其他方法来尝试使用void

using System.Data.Entity.Infrastructure;
using System.Data.Objects;

    public virtual bool Deletecustomer(int id ,bool IsDeleted )
    {
        return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<bool>("EXEC checkbit({0},{1})", id,IsDeleted ).SingleOrDefault();
    }
使用System.Data.Entity.Infrastructure;
使用System.Data.Object;
公共虚拟bool Deletecustomer(int-id,bool已删除)
{
返回((IObjectContextAdapter)this.ObjectContext.ExecuteStoreQuery(“EXEC校验位({0},{1})”,id,IsDeleted.SingleOrDefault();
}

通常会发布您的代码……对于将来的问题,在原始问题中包含详细信息非常重要。为了回答这个问题,您需要使用实体。我在这里使用实体框架。我使用了true/false,但它不起作用。您阅读了我的答案吗?我说过使用数字0或1为什么SQL Server会这样做?我一直在拼命想弄清楚为什么我的比特值没有更新。我将该值设置为
true
,执行时没有错误,但数据库一直显示
0
。是的,对于SQL server,没有真或假,只有位值
using System.Data.Entity.Infrastructure;
using System.Data.Objects;

    public virtual bool Deletecustomer(int id ,bool IsDeleted )
    {
        return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<bool>("EXEC checkbit({0},{1})", id,IsDeleted ).SingleOrDefault();
    }