2016-07-18 2 views
-1

그래서 나는 이러한 매개 변수를 사용하여 저장 프로 시저가 있습니다SQL 서버 매개 변수가있는 쿼리하지 설정 비트 값

ALTER PROCEDURE [dbo].[usp_insertOrUpdateTimeMilesNote] 
    @id int, 
    @ADID varchar(10), 
    @projectId int, 
    @taskId tinyint, 
    @hours tinyint = 0, 
    @minutes tinyint = 0, 
    @miles smallint = 0, 
    @note varchar(max), 
    @filename varchar(50), 
    @MSVCFlag bit 
AS 

그리고 난 그렇게처럼 전화 해요 : 대상에서

Using db As New SqlCommand("usp_insertOrUpdateTimeMilesNote", New SqlConnection(ConnStr)) 
    db.CommandType = CommandType.StoredProcedure 
    db.Parameters.Add("@id", SqlDbType.Int).Value = 0 
    db.Parameters.Add("@ADID", SqlDbType.VarChar, 10).Value = ADID 
    db.Parameters.Add("@projectId", SqlDbType.Int).Value = ProjectId 
    db.Parameters.Add("@taskId", SqlDbType.Int).Value = 0 
    db.Parameters.Add("@hours", SqlDbType.TinyInt).Value = 0 
    db.Parameters.Add("@minutes", SqlDbType.TinyInt).Value = 0 
    db.Parameters.Add("@miles", SqlDbType.TinyInt).Value = 0 
    db.Parameters.Add("@Note", SqlDbType.VarChar, -1).Value = NoteText 
    db.Parameters.Add("@filename", SqlDbType.VarChar, 50).Value = "" 
    db.Parameters.Add("@MSVCFlag", SqlDbType.Bit).Value = 1 
    db.Connection.Open() 
    db.ExecuteNonQuery() 
    db.Connection.Close() 
End Using 

테이블의 경우 MSVCFlag 열은 매개 변수의 값을 1로 설정하더라도 항상 0입니다.

문자열로 처리하면 올바르게 작동합니다.

"EXEC usp_insertOrUpdateTimeMilesNote " & id & ",'" & ADID & "'," & projectId & "," & taskId & "," & hours & "," & minutes & "," & miles & ",'" & note & "','" & filename & "'," & MSVCFlag & ";" 

매개 변수가 잘못 되었습니까?

편집 : 투표를 좋아합니다. 이유를 설명하는 마음?

+1

나는 당신이 True로 설정해야한다고 믿습니다. - db.Parameters.Add ("@MSVCFlag", SqlDbType.Bit) .Value = True' – stuartd

+0

연결 문자열은 어떻게 생겼습니까? 'try {} catch {} '주위의'db.ExecuteNonQuery' – MethodMan

+0

전에 값을 True로 설정하려고했는데 다시 시도했습니다. 삽입 후 테이블에 여전히 0이 표시됩니다. StackOverflow에서 비트 값이 0 또는 1로되어있는 다른 곳을 읽었습니다. – tolsen64

답변

0
var objSqlParameter = new SqlParameter 
            { 
             SqlDbType = SqlDbType.Bit, 
             ParameterName = "@MSVCFlag", 
             Value = true 
            }; 

db.Parameters.Add(objSqlParameter) 
+0

다른 방을 사용하고 방이 같은 방에 없습니까? – tolsen64

0

1 정수 값이 아닌 비트 값이다. 당신과 같이 true 또는 false와 같은 매개 변수 값을 설정해야합니다

db.Parameters.Add("@MSVCFlag", SqlDbType.Bit).Value = True 
+0

나는 이것을 시도했지만 작동하지 않는다. 테이블에 여전히 0이 표시됩니다. [this] (https://msdn.microsoft.com/en-us/library/ms177603.aspx)에 따르면 bit는 1, 0 또는 NULL 값을 가질 수있는 정수 데이터 형식입니다. – tolsen64

0

음의 수치를 나에게 더 깊이 SPROC에보고하지 않는. sproc이 그 매개 변수를 사용하지 않는 것 같습니다. @id = 0을 보내면 항상 MSVCFlag 열 (새로 삽입 된 행)에 0이 기록됩니다. @ id> 0을 전송하면 MSVCFlag를 기존 행의 1로 업데이트합니다. 그래서 나는 여기에서 수치심의 산책을 할 것입니다.