2014-04-21 5 views
7

Ich habe eine gespeicherte Prozedur in SQL, die ein Bit-Parameter hat. Ich muss den Parameter Wert von C# übergeben. Kann mir jemand helfen, wie es geht. Ich habe den Bit-Parameter wahr/falsch übergeben, aber es funktioniert nicht.Wie Bool (BIT) -Parameter an SQL Server übergeben?

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

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

     RETURN 
    END 
END 

Mein C# -Code

Im hier Entität framework.Checking für Bit-Wert.

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

Es ist üblich Code zu schreiben ... –

+0

http://stackoverflow.com/questions/15569860/passing-parameter-to-stored-procedure-in-c-sharp –

+2

Für zukünftige Fragen ist es sehr wichtig, um Details in die ursprüngliche Frage aufzunehmen. Die Tatsache, dass Sie Entitäten verwenden, ist erforderlich, damit dies beantwortet werden kann – cost

Antwort

9

Sie können nur 0 oder 1 für das BIT Feld

  • 1 für TRUE
  • 0 für FALSE

context.checkbit(id,val);// ? 1 : 0; 
verwenden
+0

Ich benutze Entity Framework hier.Ich verwendete True/False, aber es funktioniert nicht. – iysh

+5

Hast du meine Antwort gelesen? Ich sagte Benutze ** Nummern ** entweder ** 0 ** oder ** 1 ** – meda

+0

Warum hat SQL Server dies getan? Ich habe meinen Kopf gegen eine Wand geschlagen, um herauszufinden, warum mein Bit-Wert nicht aktualisiert wurde. Ich habe den Wert auf 'wahr' gesetzt und es wurde ohne Fehler ausgeführt, aber die Datenbank zeigte immer '0'. – jp2code

2

Wenn Sie Ado.net verwenden, dann versuchen Sie mit unten hoffe es funktioniert.

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

Entity Framework

wenn Ihre sp Rückkehr wahr oder falsch dann unter Ihnen andere verwenden können, müssen Sie klug mit Leere versuchen.

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(); 
    } 
+0

Ich benutze Entity Framework hier. – iysh

+0

verwenden Entity Framework-Code wird funktionieren – MSTdev

Verwandte Themen