2012-04-11 3 views
0

레코드를 삽입, 업데이트 및 삭제하는 저장 프로 시저를 사용하며 프로 시저를 실행하거나 호출하는 데 LINQ를 사용합니다. 제출 버튼을 클릭하면 업데이트 절차가 실행되었지만 테이블에 변경 사항이 없습니다! fname_txt.text 대신 "Jack"과 같은 값을 전달하면 제대로 작동하고 업데이트됩니다. 텍스트 상자 개체와 따옴표로 묶인 값 사이에 어떤 차이점이 있는지 알 수 없습니까?명령이 올바르지 만 테이블이 업데이트되지 않았습니다.

protected void submit_Click(object sender, EventArgs e) 
    { 

     try 
     { 
      ZobLinqDataContext db = new ZobLinqDataContext(); 
      string pasword = CryptorEngine.Encrypt(pass_txt.Text, true); 
      long uid = Convert.ToInt64(Request["uid"]); 
      db.pUpZDBUser(uid, 
       uname_txt.Text, 
       pasword, 
       fname_txt.Text.Trim(), 
       lname_txt.Text.Trim(), 
       modir.Checked, 
       voting.Checked, 
       Convert.ToInt32(Zarib_txt.Text), 
       false 
       ); 
      db.SubmitChanges(); 
      Response.Write(uname_txt); 
     } 
     finally 
     { 
      Session["sub"] = "1"; 
     } 

    } 

이 업데이트 PROC은 다음과 같습니다 : 여기 코드입니다

USE [ZOBDB] 
GO 
/****** Object: StoredProcedure [dbo].[pUpZDBUser] Script Date: 04/11/2012 15:17:41 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[pUpZDBUser] 
    @UID bigint, 
    @Uname nvarchar(100), 
    @Pass nvarchar(100), 
    @fname nvarchar(50), 
    @lname nvarchar(50), 
    @KU bit, 
    @KV bit, 
    @ZribV int, 
    @del bit 
As 
BEGIN TRANSACTION UpUser  
    Set NOCOUNT ON 

    UPDATE Users SET 
     [email protected], 
     [email protected], 
     [email protected], 
     [email protected], 
     [email protected], 
     [email protected], 
     [email protected], 
     del[email protected] 
    where ([email protected]) 

    --RollBack if Err 
    IF @@ERROR != 0 and @@ROWCOUNT != 1 
    BEGIN 
     declare @msg nvarchar(30) 
     set @msg = ' error '[email protected] 
     ROLLBACK 
     RAISERROR(@msg,16,1) 
     RETURN 
    END 
COMMIT TRANSACTION UpUser 
RETURN 
+1

pUpZDBUser 메서드와 연결된 SQL PROC를 컨텍스트에 게시 할 수 있습니까? – StuartLC

+0

이것은 ASP Classic이 아닌 .NET입니다. –

+0

응답을 위해 proc, tnx를 추가했습니다. @nonnb – Behzad

답변

0

추측 길이 제약에 거기 때문에 PROC 아마도, 당신은 잡기하지 않는 예외를 던지고 있다는 점이다 귀하의 fname_txt.Text.Trim() 값은 길이가 0이고, 물론 "잭"은 그렇지 않습니다.

코드에 catch 블록을 추가하여 proc에서 아무런 부작용이 없다는 것을 증명하십시오. 또한 귀하의 질문에 더 많은 도움이 될 것입니다.

+0

아니요, 예외는 없습니다. 나는 그것을 시도했지만 예외는 없었다. fname_txt에 대한 문제는이 매개 변수뿐 아니라 모든 매개 변수에 관한 것입니다. 예를 들어 uname_txt.Text 또는 lname_txt도이 문제를 포함합니다. @Ralph Shilington – Behzad

1

난 당신이

--RollBack if Err  
IF @@ERROR != 0 **OR** @@ROWCOUNT != 1 

로 제기되는 오류가 발생한다이 방법을 SPROC를 변경하고 문제가 무엇인지 볼 수있는 경우에 당신이 더 많은 행운을해야합니다 생각합니다. UID가 존재하지 않을 가능성이 있습니까?

+0

아니요, 존재합니다. db.pUpZDBUser (uid, fname_txt.text, ...) 대신 db.pUpZDBUser (uid, "Jack", ...)라고 말한대로 제대로 작동합니다. @nonnb – Behzad

+0

시도해보십시오. @@ ERROR가 0이 아니면 행 수는 0이 될 가능성이 큽니다. 그리고 업데이트가 0 행을 업데이트하면 ERROR가 0이 될 가능성이 큽니다. 오류가 절대로 제기되지 않는다는 것을 의미합니다. – StuartLC

+0

코드를 사용자 정의 코드로 변경했지만 코드가 비정상적으로 업데이트되었지만 오류가 없습니다. 나는 완전히 혼란 스럽다. 단추가 빈 개체 값을 보냈지 만 "uid"는 양식 요청이기 때문에 비어 있지 않지만 텍스트 상자가 비어 있다고 생각하는 이유와 빈 값을 보내는 이유를 모르겠습니다. @nonnb – Behzad

관련 문제