索引超出了数组的范围
问题描述:
大家好,
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.