索引超出了数组的范围

问题描述:

大家好,



i正在使用c#插入员工数据,我写了存储过程n传递参数给它。



但我得到'索引数组的边界'。



c#:



Hi guys,

i was working on c# to insert employee data, i wrote stored procedure n passing parameters to it.

but i'm getting 'index out the bounds of the array'.

c#:

public static int InsertNewEmployee(string data, Byte[] femp, Byte[] fiqm,Byte[] flcn,Byte[] fpp1,Byte[] fpp2)
       {
           try
           {
               string[] spliting = data.Split(',');

               SqlParameter[] Param = new SqlParameter[25];
               Param[0] = new SqlParameter("@Branchcode", spliting[0].ToString());
               Param[1] = new SqlParameter("@Joinningdate",  spliting[1].ToString());
               Param[2] = new SqlParameter("@Empname",  spliting[2].ToString());
               Param[3] = new SqlParameter("@Position",  spliting[3].ToString());
               Param[4] = new SqlParameter("@City",  spliting[4].ToString());
               Param[5] = new SqlParameter("@Region",  spliting[5].ToString());
               Param[6] = new SqlParameter("@Nationality",  spliting[6].ToString());
               Param[7] = new SqlParameter("@IqamaNo",  spliting[7].ToString());
               Param[8] = new SqlParameter("@IqamaExp",  spliting[8].ToString());
               Param[9] = new SqlParameter("@IqamaExpArabic",  spliting[9].ToString());
               Param[10] = new SqlParameter("@IqamaTrade",  spliting[10].ToString());
               Param[11] = new SqlParameter("@PassportNo",  spliting[11].ToString());
               Param[12] = new SqlParameter("@PassportExpiry",  spliting[12].ToString());
               Param[13] = new SqlParameter("@MobileNo",  spliting[13].ToString());
               Param[14] = new SqlParameter("@Email",  spliting[14].ToString());
               Param[15] = new SqlParameter("@Address",  spliting[15].ToString());
               Param[16] = new SqlParameter("@Age",  spliting[16].ToString());
               Param[17] = new SqlParameter("@Bloodgroup",  spliting[17].ToString());
               Param[18] = new SqlParameter("@Status",  spliting[18].ToString());
               Param[19] = new SqlParameter("@NetSal",  spliting[19].ToString());
               Param[20] = new SqlParameter("@IqamaPicture",  fiqm);
               Param[21] = new SqlParameter("@Pp1", fpp1);
               Param[22] = new SqlParameter("@Pp2", fpp2);
               Param[23] = new SqlParameter("@License",  flcn);
               Param[24] = new SqlParameter("@EmpPicture",  femp);

               int i = DAL.ExecuteNonQuery("Sp_InsertEmployee", Param);

               return i;
           }
           catch (Exception)
           {

               throw;
           }
       }





存储过程:



stored procedure:

USE [RAS]
GO
/****** Object:  StoredProcedure [dbo].[Sp_InsertEmployee]    Script Date: 06/14/2014 11:08:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[Sp_InsertEmployee]
(			
			@Branchcode nvarchar(50)
           ,@Joinningdate varchar(10)
           ,@Empname nvarchar(50)
           ,@Position  nvarchar(50)
           ,@City  nvarchar(50)
           ,@Region  nvarchar(50)
           ,@Nationality  nvarchar(50)
           ,@IqamaNo nvarchar(50)
           ,@IqamaExp  nvarchar(50)
           ,@IqamaExpArabic varchar(10)
           ,@IqamaTrade nvarchar(50)
           ,@PassportNo nvarchar(50)
           ,@PassportExpiry varchar(10)
           ,@MobileNo nvarchar(50)
           ,@Email nvarchar(50)
           ,@Address nvarchar(50)
           ,@Age  nvarchar(50)
           ,@Bloodgroup nvarchar(50)
           ,@EmpPicture image
           ,@IqamaPicture image
           ,@Pp1 image
           ,@Pp2 image
           ,@License image
           ,@NetSal  nvarchar(50)
           ,@Status  nvarchar(50)
)

-- Sp_InsertEmployee 1,'02/02/2014',null,1,1,1,1,null,'02/02/2014','02/02/1435',null,null,null,null,null,null,null,null,null,null,null,null,null,null,1

AS BEGIN
BEGIN TRY
INSERT INTO [RAS].[dbo].[tbl_Employee]
           ([Branchcode]
           ,[Joinningdate]
           ,[Empname]
           ,[Position]
           ,[City]
           ,[Region]
           ,[Nationality]
           ,[IqamaNo]
           ,[IqamaExp]
           ,[IqamaExpArabic]
           ,[IqamaTrade]
           ,[PassportNo]
           ,[PassportExpiry]
           ,[MobileNo]
           ,[Email]
           ,[Address]
           ,[Age]
           ,[Bloodgroup]
           ,[Insertiondate]
           ,[EmpPicture]
           ,[IqamaPicture]
           ,[Pp1]
           ,[Pp2]
           ,[License]
           ,[NetSal]
           ,[Status])
     VALUES
     (			
			CAST(@Branchcode  AS int)
           ,CAST(@Joinningdate  AS DATETIME)
           ,@Empname 
           ,CAST(@Position   AS int)
           ,CAST(@City   AS int)
           ,CAST(@Region   AS int)
           ,CAST(@Nationality   AS int)
           ,@IqamaNo 
           ,CAST(@IqamaExp AS DATETIME)
           ,@IqamaExpArabic
           ,@IqamaTrade 
           ,@PassportNo 
           ,CAST(@PassportExpiry  AS DATETIME)
           ,@MobileNo 
           ,@Email 
           ,@Address 
           ,CAST(@Age  AS int)
           ,@Bloodgroup 
           ,GETDATE()
           ,@EmpPicture 
           ,@IqamaPicture 
           ,@Pp1 
           ,@Pp2 
           ,@License 
           ,CAST(@NetSal AS numeric(18,2))
           ,@Status 
     )
END TRY
BEGIN CATCH
 
END CATCH           
END

print CONVERT(datetime,@IqamaExp, 101)
print @IqamaExpArabic





可以任何一个plzzzz帮助我,为什么我是得到这个错误。



虽然我有确切的参数长度。



thnx



can any one plzzzz help me, why i'm getting this error.

eventhough i have exact parameter length.

thnx

检查您的数据:

Check your data:
string[] spliting = data.Split(',');
...
Param[19] = new SqlParameter("@NetSal",  spliting[19].ToString());



如果数据没有19个逗号(即20个项目)那么你将获得一个数组边界错误。


If data does not have 19 commas (i.e. 20 items) then you will get an array bounds error.