public static bool addSoft(string name,string typeid,string intro,string system,string language,int size,DateTime addtime,int rank,string type,string country,string edition,int downfilesum,string[] downfile,string[] downfilename)
{
intro=repl(intro);
SqlConnection con=conDB.creatCon();
// try
// {
//开始添加信息到DownMain表
SqlParameter pmname=new SqlParameter("@name",SqlDbType.VarChar,20);
SqlParameter pmintro=new SqlParameter("@intro",SqlDbType.VarChar,50);
SqlParameter pmtypeid=new SqlParameter("@typeid",SqlDbType.VarChar,10);
SqlParameter pmsystem=new SqlParameter("@system",SqlDbType.VarChar,10);
SqlParameter pmlanguage=new SqlParameter("@language",SqlDbType.VarChar,10);
SqlParameter pmsize=new SqlParameter("@size",SqlDbType.Int,4);
SqlParameter pmaddtime=new SqlParameter("@addtime",SqlDbType.DateTime,8);
SqlParameter pmrank=new SqlParameter("@rank",SqlDbType.Int,4);
SqlParameter pmtype=new SqlParameter("@type",SqlDbType.VarChar,10);
SqlParameter pmedition=new SqlParameter("@edition",SqlDbType.VarChar,10);
SqlParameter pmcountry=new SqlParameter("@country",SqlDbType.VarChar,10);
SqlParameter pmdownfile=new SqlParameter("@downfile",SqlDbType.VarChar,50);
SqlParameter pmdownfilename=new SqlParameter("@downfilename",SqlDbType.VarChar,20);
SqlParameter pmdownid=new SqlParameter("@downid1",SqlDbType.Int,4);
SqlParameter pmnoid=new SqlParameter("@noid",SqlDbType.Int,4);
pmname.Value=name;
pmintro.Value=intro;
pmtypeid.Value=typeid;
pmsystem.Value=system;
pmlanguage.Value=language;
pmsize.Value=size;
pmaddtime.Value=addtime;
pmrank.Value=rank;
pmtype.Value=type;
pmedition.Value=edition;
pmcountry.Value=country;
SqlCommand cmd=new SqlCommand("insert DownMain values(@name,@typeid,@intro,@system,@language,@size,@type,@edition,@country,@addtime)select @@IDENTITY",con);
cmd.Parameters.Add(pmname);
cmd.Parameters.Add(pmintro);
cmd.Parameters.Add(pmtypeid);
cmd.Parameters.Add(pmsystem);
cmd.Parameters.Add(pmlanguage);
cmd.Parameters.Add(pmsize);
cmd.Parameters.Add(pmaddtime);
cmd.Parameters.Add(pmrank);
cmd.Parameters.Add(pmtype);
cmd.Parameters.Add(pmedition);
cmd.Parameters.Add(pmcountry); con.Open();
int downid=Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
//添加到DownMain表结束
//获取添加软件到DownMain表行的ID值
// int downid=selectSoftId(name);
for(int i=0;i<downfilesum;i++)
{ pmdownid.Value=downid;
pmnoid.Value=i+1;
pmdownfile.Value=downfile[i];
pmdownfilename.Value=downfilename[i];
SqlConnection conn=conDB.creatCon();
SqlCommand comm=new SqlCommand("insert DownFile values(@downid1,@noid,@downfilename,@downfile)",conn);

cmd.Parameters.Add(pmdownfile);
cmd.Parameters.Add(pmdownfilename);
cmd.Parameters.Add(pmdownid);
cmd.Parameters.Add(pmnoid);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
}
return true;
// }
// catch
// {
// return false;
// }
}使用该函数时老是出现            必须声明变量 '@downid1'。 杂弄啊?有什么解决的办法?

解决方案 »

  1.   

    你看看你的存储过程中有没有'@downid1'这个变量,有可能是你在存储过程中没有这个变量哦
      

  2.   

    有啊SqlParameter pmdownid=new SqlParameter("@downid1",SqlDbType.Int,4);
    这个不是嘛
      

  3.   

    我狂晕。。
    --------------
    有啊SqlParameter pmdownid=new SqlParameter("@downid1",SqlDbType.Int,4);
    这个不是嘛
    --------------
    看看你的存储过程中是否有这个变量,而不是程序中,包括变量的类型。
      

  4.   

    insert DownMain values(@name,@typeid,@intro,@system,@language,@size,@type,@edition,@country,@addtime)select @@IDENTITY"
    -----------
    这是个什么东东?
    我记insert语句,若不写字段名的话,values里面的值及顺序要与数据表完全一致的。看看这里是否有问题?
    select @@IDENTITY是什么?
      

  5.   

    insert into downmain (字段名1,字段名2,。) values ('字段1的值','字段2的值',...)
      

  6.   

    select @@IDENTITY 是返回添加记录的标符字段的值values里的值和表的顺序完全一样.
      

  7.   

    楼上的 看在是近亲的份上帮我解决解决问题啊我的QQ100221200
    MSN:[email protected]
      

  8.   

    编译通过了吗?
    如果通过了,那使用SQL跟踪,看看执行的SQL语句是什么?
      

  9.   

    我知道设置段点,但不知道杂跟踪SQL语句
      

  10.   

    SqlCommand cmd=new SqlCommand("insert DownMain values(@name,@typeid,@intro,@system,@language,@size,@type,@edition,@country,@addtime)select @@IDENTITY",con);你看看你的insert语句,两处问题!
    其实告诉你个好的处理问题的方法,其实比如说你做几个操作,然后有错误,而且你又很难分辨是到底哪个细节出错,那么你应该比如说你做了三次操作,你就先把后两次注释点,先解决第一处,这样一个一个问题的排除...
      

  11.   

    首先添加字段是
    insert 表(字段1,字段2,.....) values(值1,值2,...)  这样的形式的,这里的...代表有N多字段的意思.恩.
    而且你看你在这里执行了两个语句,还执行了select @@IDENTITY
    那么你直接连着,这怎么行呢,两句SQL语句中间应该要有;号隔开,
      

  12.   

    public static bool addSoft(string name,string typeid,string intro,string system,string language,int size,DateTime addtime,int rank,string type,string country,string edition,int downfilesum,string[] downfile,string[] downfilename)
    {
    intro=repl(intro);
    SqlConnection con=conDB.creatCon();
    //try
    //{
    //开始添加信息到DownMain表
    SqlParameter pmname=new SqlParameter("@name",SqlDbType.VarChar,20);
    SqlParameter pmintro=new SqlParameter("@intro",SqlDbType.VarChar,50);
    SqlParameter pmtypeid=new SqlParameter("@typeid",SqlDbType.VarChar,10);
    SqlParameter pmsystem=new SqlParameter("@system",SqlDbType.VarChar,10);
    SqlParameter pmlanguage=new SqlParameter("@language",SqlDbType.VarChar,10);
    SqlParameter pmsize=new SqlParameter("@size",SqlDbType.Int,4);
    SqlParameter pmaddtime=new SqlParameter("@addtime",SqlDbType.DateTime,8);
    SqlParameter pmrank=new SqlParameter("@rank",SqlDbType.Int,4);
    SqlParameter pmtype=new SqlParameter("@type",SqlDbType.VarChar,10);
    SqlParameter pmedition=new SqlParameter("@edition",SqlDbType.VarChar,10);
    SqlParameter pmcountry=new SqlParameter("@country",SqlDbType.VarChar,10);
    SqlParameter pmdownfile=new SqlParameter("@downfile",SqlDbType.VarChar,50);
    SqlParameter pmdownfilename=new SqlParameter("@downfilename",SqlDbType.VarChar,20);
    SqlParameter pmdownid=new SqlParameter("@downid1",SqlDbType.Int,4);
    SqlParameter pmnoid=new SqlParameter("@noid",SqlDbType.Int,4);
    pmname.Value=name;
    pmintro.Value=intro;
    pmtypeid.Value=typeid;
    pmsystem.Value=system;
    pmlanguage.Value=language;
    pmsize.Value=size;
    pmaddtime.Value=addtime;
    pmrank.Value=rank;
    pmtype.Value=type;
    pmedition.Value=edition;
    pmcountry.Value=country;
    SqlCommand cmd=new SqlCommand("insert DownMain values(@name,@typeid,@intro,@system,@language,@size,@type,@edition,@country,@addtime); select @@IDENTITY",con);
    cmd.Parameters.Add(pmname);
    cmd.Parameters.Add(pmintro);
    cmd.Parameters.Add(pmtypeid);
    cmd.Parameters.Add(pmsystem);
    cmd.Parameters.Add(pmlanguage);
    cmd.Parameters.Add(pmsize);
    cmd.Parameters.Add(pmaddtime);
    cmd.Parameters.Add(pmrank);
    cmd.Parameters.Add(pmtype);
    cmd.Parameters.Add(pmedition);
    cmd.Parameters.Add(pmcountry);con.Open();
    int downid=Convert.ToInt32(cmd.ExecuteScalar());
    con.Close();
    //添加到DownMain表结束
    //获取添加软件到DownMain表行的ID值
    //int downid=selectSoftId(name);
    for(int i=0;i<downfilesum;i++)
    {pmdownid.Value=downid;
    pmnoid.Value=i+1;
    pmdownfile.Value=downfile[i];
    pmdownfilename.Value=downfilename[i];
    SqlConnection conn=conDB.creatCon();
    SqlCommand comm=new SqlCommand("insert DownFile values(@downid1,@noid,@downfilename,@downfile)",conn);cmd.Parameters.Add(pmdownfile);
    cmd.Parameters.Add(pmdownfilename);
    cmd.Parameters.Add(pmdownid);
    cmd.Parameters.Add(pmnoid);
    conn.Open();
    conn.ExecuteNonQuery();
    conn.Close();
    }
    return true;
    //}
    //catch
    //{
    //return false;
    //}