您好我已尝试将数据插入数据库,使用类文件..我有两个类,其中一个是Material.cs,另一个是DataAccessLayer.cs。但执行我的代码时出现错误,如过程或函数sp_insert_componet指定了太多参数。“”
//来自Material.cs
private string strCREATEDBY;
private string strCREATEDDATE;
private string strUPDATEDBY;
private string strUPDATEDDATE;
private string strSTATUS;
public string Createdby
{
get
{
return strCREATEDBY;
}
set
{
strCREATEDBY = value;
}
}
public string Createddate
{
get
{
return strCREATEDDATE;
}
set
{
strCREATEDDATE = value;
}
}
public string Updateddate
{
get
{
return strUPDATEDDATE;
}
set
{
strUPDATEDDATE = value;
}
}
public string Updatedby
{
get
{
return strUPDATEDBY;
}
set
{
strUPDATEDBY = value;
}
}
public string Status
{
get
{
return strSTATUS;
}
set
{
strSTATUS = value;
}
}
//Maingroup
//created by : ramya
//created date:15.2.2012
private string strIDENTIFY;
private string strNO;
private string strNAME;
private string strMAINIDENTIFICATION;
public string Identification
{
get
{
return strIDENTIFY;
}
set
{
strIDENTIFY = value;
}
}
public string NO
{
get
{
return strNO;
}
set
{
strNO = value;
}
}
public string NAME
{
get
{
return strNAME;
}
set
{
strNAME = value;
}
}
public string Mainidentify
{
get
{
return strMAINIDENTIFICATION;
}
set
{
strMAINIDENTIFICATION = value;
}
}
private string strItemtype;
public string Itemtype
{
get
{
return strItemtype;
}
set
{
strItemtype = value;
}
}
private string strSitename;
public string Sitename
{
get
{
return strSitename;
}
set
{
strSitename = value;
}
}
public int Savecomponent()
{
objDL.Addparam("@Createdby", Createdby);
objDL.Addparam("@Createddate", Createddate);
objDL.Addparam("@Sitecode", NO);
objDL.Addparam("@Itemtype", Itemtype);
objDL.Addparam("@Status", Status);
objDL.Addparam("@Maingroupsno", Mainidentify);
objDL.Addparam("@Subgroupsno", Identification);
objDL.Addparam("@Componetcode",NAME);
objDL.Addparam("@Sitename", Sitename);
int save = objDL.insert("sp_insert_componet");
if (save > 0)
{
return 1;
}
else
{
return 0;
}
}
//来自DataAccessLayer.cs
public int insert(string strInsert)
{
try
{
Con.Open();
cmd.Connection = Con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = strInsert;
int RetInsert = cmd.ExecuteNonQuery();
return RetInsert;
}
catch (Exception ex)
{
throw ex;
}
//got error in this finally block
finally
{
Con.Close();
}
}
答案 0 :(得分:6)
您正在指定存储过程不期望的参数。 删除任何未由存储过程定义的参数
确保块中的每个参数
objDL.Addparam("@Createdby", Createdby);
objDL.Addparam("@Createddate", Createddate);
objDL.Addparam("@Sitecode", NO);
objDL.Addparam("@Itemtype", Itemtype);
objDL.Addparam("@Status", Status);
objDL.Addparam("@Maingroupsno", Mainidentify);
objDL.Addparam("@Subgroupsno", Identification);
objDL.Addparam("@Componetcode",NAME);
objDL.Addparam("@Sitename", Sitename);
在存储过程中有相应的参数。删除过程
中未定义的任何参数答案 1 :(得分:5)
如果参数数量相同,则尝试检查其类型。
参数类型必须与表格中的相同
答案 2 :(得分:1)
问题是您的存储过程sp_insert_componet
中定义的输入参数较少。
将C#代码中的参数数量与存储过程中的参数数量进行比较。
答案 3 :(得分:1)
如果使用其他数据库环境,请检查数据库连接。
我遇到了这个问题,因为我的配置文件指向了错误的数据库,该数据库具有相同的SP和不同的参数。
答案 4 :(得分:0)
否,即使参数完全相同,在SQL Server上存储过程中使用SQL INSERT的情况下,也会出现此错误。
原来,您还必须在存储过程中为要在其中插入新记录的表的PRIMARY KEY定义一个参数。在我的情况下,@ CompanyID没有作为参数传递,但是没有定义它,就会发生“参数过多”错误。如果有帮助,CompanyID字段的“ identity”设置为“ true”,则每条新记录都会增加它。
ALTER PROCEDURE [dbo]。[FormViewCompanies_Insert](
@CompanyID AS INT。 / *不作为参数传递* /
@MemberID AS INT,/ *作为参数 /传递 @ChapterID AS INT,/ 作为参数传递* / ...