2012-09-24 3 views
0

웹 양식의 모든 데이터를 채우십시오. 저장 프로 시저 으로 작동하지만 AwardName2, Authority2, AwardYear2 및 Remarks2와 같은 일부 열은 남겨 둡니다. 이 열을 내 테이블에 NULL로 언급), 프로그램에서 "매개 변수 값을 문자열에서 Int 32로 변환하지 못했습니다."오류가 발생합니다. 저장 프로 시저에서 변경해야 할 사항은 무엇입니까? 도와주세요.오류 : 문자열에서 매개 변수 값을 Int32로 변환하지 못했습니다.

ALTER PROCEDURE [dbo].[usp_RegPage2] 
    @Vendor_ID VARCHAR(16), @EmpDetailsDocPath VARCHAR(200), @EmpTotalNo INT, 
    @EmpAbove5Years INT, @EmpEnggDesign INT, @EmpProContract INT, @QADocPath VARCHAR(200), 
    @QAStandard VARCHAR(50), @QADocument CHAR(3), @QAControl CHAR(3), @HSEDocPath VARCHAR(200), 
    @HSEStandard VARCHAR(15), @HSEDocument CHAR(3), @HSEControlManual CHAR(3), 
    @AuthorityDocPath VARCHAR(200), @AwardName1 VARCHAR(50), @Authority1 VARCHAR(50), 
    @AwardYear1 INT,@Remarks1 VARCHAR(70),@AwardName2 VARCHAR(50), 
    @Authority2 VARCHAR(50), @AwardYear2 INT, @Remarks2 VARCHAR(70), @AwardName3 VARCHAR(50), 
    @Authority3 VARCHAR(50), @AwardYear3 INT, @Remarks3 VARCHAR(70), 
    @AwardName4 VARCHAR(50), @Authority4 VARCHAR(50), @AwardYear4 INT, @Remarks4 VARCHAR(70), 
    @BritishStandard CHAR(3), @AmericanStandard CHAR(3), @OtherStandard VARCHAR(50),  
    @REManpower CHAR(3), @RESubContract CHAR(3), @RELabourPath VARCHAR(200), 
    @REEquipmentPath VARCHAR(200), @REShop CHAR(3), @REAssemblyyard CHAR(3), 
    @RESizeofShop INT,@REHouse CHAR(3),@REOutSource CHAR(3),@ProjectDocPath VARCHAR(200),  
    @CmpVision VARCHAR(200), @CmpFullRegDate DATE = NULL 
    AS SET @CmpFullRegDate = COALESCE(@CmpFullRegDate,GETDATE()); 
    BEGIN 
    INSERT INTO dbo.RegPage2  
    (Vendor_ID,EmpDetailsDocPath,EmpTotalNo,EmpAbove5Years,EmpEnggDesign,EmpProContract, 
    QADocPath,QAStandard,QADocument,QAControl,HSEDocPath,HSEStandard,HSEDocument, 
    HSEControlManual,AuthorityDocPath,AwardName1,Authority1,AwardYear1,Remarks1, 
    AwardName2,Authority2,AwardYear2,Remarks2,AwardName3,Authority3,AwardYear3,Remarks3, 
    AwardName4,Authority4,AwardYear4,Remarks4,BritishStandard,AmericanStandard,  
    OtherStandard,REManpower,RESubContract,RELabourPath,REEquipmentPath,REShop, 
    REAssemblyyard,RESizeofShop,REHouse,REOutSource,ProjectDocPath,CmpVision,CmpFullRegDate) 
    VALUES  
    (@Vendor_ID,@EmpDetailsDocPath,@EmpTotalNo,@EmpAbove5Years,@EmpEnggDesign,@EmpProContract, 
    @QADocPath,@QAStandard,@QADocument,@QAControl,@HSEDocPath,@HSEStandard,@HSEDocument, 
    @HSEControlManual,@AuthorityDocPath,@AwardName1,@Authority1,@AwardYear1,@Remarks1,@AwardName2, 
    @Authority2,@AwardYear2,@Remarks2,@AwardName3,@Authority3,@AwardYear3,@Remarks3, 
    @AwardName4,@Authority4,@AwardYear4,@Remarks4,@BritishStandard,@AmericanStandard, 
    @OtherStandard,@REManpower,@RESubContract,@RELabourPath,@REEquipmentPath,@REShop, 
    @REAssemblyyard,@RESizeofShop,@REHouse,@REOutSource,@ProjectDocPath, 
    @CmpVision,@CmpFullRegDate)  
    END 

C# 코드

 protected void BtnRegPage2Save_Click(object sender, EventArgs e) 
     { 
     SqlConnection SqlCon = new SqlConnection(GetConnectionString()); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandText = "usp_RegPage2"; 
     cmd.Parameters.Add("@Vendor_ID", SqlDbType.VarChar).Value = lblPage2ID.Text; 
     cmd.Parameters.Add("@EmpDetailsDocPath", SqlDbType.VarChar).Value = AFU7.FileName; 
     cmd.Parameters.Add("@EmpTotalNo", SqlDbType.Int).Value = txtTotalEmp.Text.Trim(); 
     cmd.Parameters.Add("@EmpAbove5Years", SqlDbType.Int).Value = txtstability.Text.Trim(); 
     cmd.Parameters.Add("@EmpEnggDesign", SqlDbType.Int).Value = txtEnggDesign.Text.Trim(); 
     cmd.Parameters.Add("@EmpProContract", SqlDbType.Int).Value = txtProContract.Text.Trim(); 
     cmd.Parameters.Add("@QADocPath", SqlDbType.VarChar).Value = AFU8.FileName; 
     cmd.Parameters.Add("@QAStandard", SqlDbType.VarChar).Value = ddlQACertificate.Text.Trim(); 
     cmd.Parameters.Add("@QADocument", SqlDbType.Char).Value = ddlQSDocument.Text.Trim(); 
     cmd.Parameters.Add("@QAControl", SqlDbType.Char).Value = ddlQCManual.Text.Trim(); 
     cmd.Parameters.Add("@HSEStandard", SqlDbType.VarChar).Value = ddlHSECertificate.Text; 
     cmd.Parameters.Add("@HSEDocument", SqlDbType.Char).Value = ddlHSEDocument.Text; 
     cmd.Parameters.Add("@HSEControlManual", SqlDbType.Char).Value = ddlHSEManual.Text; 
     cmd.Parameters.Add("@HSEDocPath", SqlDbType.VarChar).Value = AFU9.FileName; 
     cmd.Parameters.Add("@AuthorityDocPath", SqlDbType.VarChar).Value = AFU3.FileName; 
     cmd.Parameters.Add("@AwardName1", SqlDbType.VarChar).Value = txtAward1.Text.Trim(); 
     cmd.Parameters.Add("@Authority1", SqlDbType.VarChar).Value = txtAuthority1.Text.Trim(); 
     cmd.Parameters.Add("@AwardYear1", SqlDbType.Int).Value = txtYear1.Text.Trim(); 
     cmd.Parameters.Add("@Remarks1", SqlDbType.VarChar).Value = txtRemarks1.Text.Trim(); 
     cmd.Parameters.Add("@AwardName2", SqlDbType.VarChar).Value = txtAward2.Text.Trim(); 
     cmd.Parameters.Add("@Authority2", SqlDbType.VarChar).Value = txtAuthority2.Text.Trim(); 
     cmd.Parameters.Add("@AwardYear2", SqlDbType.Int).Value = txtYear2.Text.Trim(); 
     cmd.Parameters.Add("@Remarks2", SqlDbType.VarChar).Value = txtRemarks2.Text.Trim(); 
     cmd.Parameters.Add("@AwardName3", SqlDbType.VarChar).Value = txtAward3.Text.Trim(); 
     cmd.Parameters.Add("@Authority3", SqlDbType.VarChar).Value = txtAuthority3.Text.Trim(); 
     cmd.Parameters.Add("@AwardYear3", SqlDbType.Int).Value = txtYear3.Text.Trim(); 
     cmd.Parameters.Add("@Remarks3", SqlDbType.VarChar).Value = txtRemarks3.Text.Trim(); 
     cmd.Parameters.Add("@AwardName4", SqlDbType.VarChar).Value = txtAward4.Text.Trim(); 
     cmd.Parameters.Add("@Authority4", SqlDbType.VarChar).Value = txtAuthority4.Text.Trim(); 
     cmd.Parameters.Add("@AwardYear4", SqlDbType.Int).Value = txtYear4.Text.Trim(); 
     cmd.Parameters.Add("@Remarks4", SqlDbType.VarChar).Value = txtRemarks4.Text.Trim(); 
     cmd.Parameters.Add("@BritishStandard", SqlDbType.Char).Value = ddlBritishStd.Text.Trim(); 
     cmd.Parameters.Add("@AmericanStandard", SqlDbType.Char).Value = ddlAmericanStd.Text.Trim(); 
     cmd.Parameters.Add("@OtherStandard", SqlDbType.VarChar).Value = txtOthers.Text.Trim(); 
     cmd.Parameters.Add("@REManpower", SqlDbType.Char).Value = ddlOwnManpower.Text.Trim(); 
     cmd.Parameters.Add("@RESubContract", SqlDbType.Char).Value = ddlSubContract.Text.Trim(); 
     cmd.Parameters.Add("@RELabourPath", SqlDbType.VarChar).Value = AFU4.FileName; 
     cmd.Parameters.Add("@REEquipmentPath", SqlDbType.Char).Value = AFU5.FileName; 
     cmd.Parameters.Add("@REShop", SqlDbType.Char).Value = ddlAtShop.Text; 
     cmd.Parameters.Add("@REAssemblyyard", SqlDbType.Char).Value = ddlAssembly.Text; 
     cmd.Parameters.Add("@RESizeofShop", SqlDbType.Int).Value = txtAssemblysize.Text; 
     cmd.Parameters.Add("@REHouse", SqlDbType.Char).Value = ddlInHouse.Text; 
     cmd.Parameters.Add("@REOutSource", SqlDbType.Char).Value = ddlOutSourcing.Text; 
     cmd.Parameters.Add("@ProjectDocPath", SqlDbType.VarChar).Value = AFU6.FileName; 
     cmd.Parameters.Add("@CmpVision", SqlDbType.VarChar).Value = txtVision.Text.Trim(); 
     cmd.Connection = SqlCon; 
     try 
     { 
     SqlCon.Open(); 
     cmd.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
     throw new Exception(ex.Message); 
     } 
     finally 
     { 
     SqlCon.Close(); 
     SqlCon.Dispose(); 
     } 
    } 
+0

당신이 .NET 코드 – Maheep

+0

에 매개 변수를 추가하는 코드를 추가하십시오 string'와'Int32''에 참조 "정수 (int) (32)에 문자열에서 매개 변수 값을 변환하지 못했습니다" 이 오류는 SQL Server ('varchar' 및'int' 데이터 유형이 있음)가 아니라 .NET 측에서 발생 함을 나타냅니다. 우리는 .NET 코드를 볼 필요가 있습니다. –

답변

1

만들기 당신의 열이 PROC가 자동으로 열

범인에 해당하는 매개 변수에 null을 할당합니다 의미하지 않는다 표에 NULL 아마 @AwardYear 및 기타 int 매개 변수입니다. 당신은 당신의 코드에서 DBNull이 전달해야

if(String.IsNullOrEmpty(AwardYear)) 
    command.Parameters.AddWithValue("@AwardYear", DBNull.Value); 
else 
    command.Parameters.AddWithValue("@AwardYear", Convert.ToInt32(AwardYear)); 
0

모든 당신이 PROC 전달 데이터 유형 INT 있습니다 테이블에서 나는 열 몇 가지를 추측 table.Becaues의 열 데이터 유형과 동일을 확인 그냥 크로스 그들을 위해 당신은 sproc에 varchar 매개 변수를 전달하고 있습니다.

관련 문제