当前位置:编程学习 > C#/ASP.NET >>

请教高手!!!存储过程和ASP.net后台代码问题

我建了一个存储过程!如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER proc [dbo].[InsuranceInfo_Insert]
@cID int,
@icID int,
@icodeID int,
@itID int,
@cNo varchar(100),
@iNo varchar(100),
@icodeName varchar(200),
@icName varchar(200),
@itType varchar(200),
@iStartTime datetime,
@iEndTime datetime,
@iInsured varchar(100),
@iInsuredID varchar(100),
@iRegDate datetime,
@iMoney money,
@iReMark varchar(200)
as
begin


insert into InsuranceInfo(iNo,iStartTime,iEndTime,itID,icID,iInsured,iInsuredID,cID,iRegDate,iMoney,icodeID,iReMark) values 
(@iNo,@iStartTime,@iEndTime,@itID,@icID,@iInsured,@iInsuredID,@cID,@iRegDate,@iMoney,@icodeID,@iReMark);select @@identity



END
后台代码:
 protected void BtnOK_Click(object sender, EventArgs e)
    {
        string Cno, Ino, Name, ICD, Company, IcodeName, Istype, DataTime, StartTime, EndTime,Remark,Money;
        

        Cno = TextCno.Text.ToString();
        Ino = TextIno.Text.ToString();
        Name = TextName.Text.ToString();
        ICD = TextId.Text.ToString();
        Company = DDL1.SelectedValue;
        IcodeName = DDL2.SelectedValue;
        Istype = DDL3.SelectedValue;
        DataTime = DateTime.Parse(TextData.Text).ToString();
        StartTime = DateTime.Parse(TextiStartTime.Text).ToString();
        EndTime = DateTime.Parse(TextiEndTime.Text).ToString();

        //Money = TextMoney.Text.ToString();

        Money = Convert.ToDecimal(TextMoney.Text.ToString()).ToString();   


        Remark = TxtiReMark.Text.ToString();

        SqlCommand mycom = new SqlCommand("InsuranceInfo_Insert", con);
        mycom.CommandType = CommandType.StoredProcedure;
        //传入参数
        mycom.Parameters.Add("@cNo", SqlDbType.VarChar).Value = Cno;

        mycom.Parameters.Add("@iNo", SqlDbType.VarChar).Value = Ino;
        mycom.Parameters.Add("@iInsured", SqlDbType.VarChar).Value = Name;
        mycom.Parameters.Add("@iInsuredID", SqlDbType.VarChar).Value = ICD;
        mycom.Parameters.Add("@icName", SqlDbType.VarChar).Value = Company;
        mycom.Parameters.Add("@icodeName", SqlDbType.VarChar).Value = IcodeName;
        mycom.Parameters.Add("@itType", SqlDbType.VarChar).Value = Istype;
        mycom.Parameters.Add("@iRegDate", SqlDbType.DateTime).Value = DataTime;
        mycom.Parameters.Add("@iStartTime", SqlDbType.DateTime).Value = StartTime;
        mycom.Parameters.Add("@iEndTime", SqlDbType.DateTime).Value = EndTime;
        mycom.Parameters.Add("@iMoney", SqlDbType.Money).Value = Money;

        if (TxtiReMark.Text == "")
        {
            mycom.Parameters.Add("@iReMark", SqlDbType.VarChar).Value = 0;
        }
        else
        {
            Remark = TxtiReMark.Text;
            mycom.Parameters.Add("@iReMark", SqlDbType.VarChar).Value = Remark;
        }

        con.Open();
        mycom.ExecuteNonQuery();
        con.Close();
        Response.Write("<script>alert('客户信息保存成功');location='CreatClientInfo.aspx'</script>");
    }
运行出错!过程或函数 'InsuranceInfo_Insert' 需要参数 '@cID',但未提供该参数。
请教一下该怎么解决? --------------------编程问答-------------------- 少传了一个@cID参数
mycom.Parameters.Add("@cID", 。。。。 --------------------编程问答-------------------- 你的cID如果是自增,就把这个参数去掉

ALTER proc [dbo].[InsuranceInfo_Insert]
@cID int,,
@icodeID int,
@itID int,
@cNo varchar(100),
@iNo varchar(100),
@icodeName varchar(200),
@icName varchar(200),
@itType varchar(200),
@iStartTime datetime,
@iEndTime datetime,
@iInsured varchar(100),
@iInsuredID varchar(100),
@iRegDate datetime,
@iMoney money,
@iReMark varchar(200)
as
begin

--------------------编程问答-------------------- 太粗心啦。。。。。一菜更比一菜菜啊 --------------------编程问答-------------------- 不能去掉,去掉就报错 没有定义这个参数变量!后台代码中不会传这个cID,只会传cNo,这是多个表在一起建的存储过程! --------------------编程问答--------------------
引用 4 楼 chenxi7487 的回复:
不能去掉,去掉就报错 没有定义这个参数变量!后台代码中不会传这个cID,只会传cNo,这是多个表在一起建的存储过程!

ALTER proc [dbo].[InsuranceInfo_Insert]
@cID int,
@icID int,
@icodeID int,
@itID int,
@cNo varchar(100),
@iNo varchar(100),
@icodeName varchar(200),
@icName varchar(200),
@itType varchar(200),
@iStartTime datetime,
@iEndTime datetime,
@iInsured varchar(100),
@iInsuredID varchar(100),
@iRegDate datetime,
@iMoney money,
@iReMark varchar(200)
as
begin


insert into InsuranceInfo(iNo,iStartTime,iEndTime,itID,icID,iInsured,iInsuredID,cID,iRegDate,iMoney,icodeID,iReMark) values  
(@iNo,@iStartTime,@iEndTime,@itID,@icID,@iInsured,@iInsuredID,@cID,@iRegDate,@iMoney,@icodeID,@iReMark);select @@identity


废话让你去掉参数,存储过程里面当然也要去掉,这也要人教你???

还有 你的存储过程不算@cID有15个参数
你C#代码里一共传进来12个参数
能不报错就TM见鬼了!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,