using (DataConnection conn = new DataConnection())
            {
                conn.CommandText = @"insert into ruku (jcmc,dj,ydj,cbs,syfw,xq,zdh,bianz,cbsj,kcmc,sl,xyr,xbdh,gysh,yxjch,jsbl)
                                   select jcmc,@xgdj,dj,cbs,syfw,xq,zdh,bianz,cbsj,kcmc,sl,xyr,xbdh,gysh,@yxjch,@jsbl from shjc
                                   where jcmc=@jcmc and dj=@dj and cbs=@cbs and xq=@xq  and rk_flag=0
                                   update shjc set rk_flag=1 where jcmc=@jcmc and dj=@dj and cbs=@cbs and xq=@xq";
                conn.Parameters.Clear();
                conn.Parameters.Add("@jcmc", SqlDbType.Char).Value = jcmc;
                conn.Parameters.Add("@dj", SqlDbType.Money).Value = dj;
                conn.Parameters.Add("@cbs", SqlDbType.Char).Value = cbs;
                conn.Parameters.Add("@xq", SqlDbType.Char).Value = xq;
                conn.Parameters.Add("@jsbl", SqlDbType.Float).Value = jsbl;
                conn.Parameters.Add("@yxjch", SqlDbType.Char);
                if (TextBox1.Text == "")
                {
                    xgdj = Convert.ToDecimal(Labeldj.Text);
                }
                else
                {
                    xgdj = Convert.ToDecimal(TextBox1.Text);
                }
                conn.Parameters.Add("@xgdj", SqlDbType.Money).Value = xgdj;                if (DropDownListYXJC.SelectedIndex == 0)
                {
                    conn.Parameters["@yxjch"].IsNullable = true;
                    conn.Parameters["@yxjch"].Value = DBNull.Value;
                }
                else
                {                    conn.Parameters["@yxjch"].Value = DropDownListYXJC.SelectedValue;
                }
                try
                {
                    conn.ExecuteNonQuery();
                }
                catch (SqlException ex)
                {
                    pnlWrong.Visible = true;
                    wrongMsg = "错误!" + ex.Message;
                    return;
                }

解决方案 »

  1.   

    加红色的SQL语句不解,怎么前面为insert后为update,请教,谢谢
      

  2.   

    这是两个SQL语句吧!没有这样写过,但是好像应该是对的吧!在SQL中应该会当两个语句来执行。
    试一下看看有没有问题。
      

  3.   

    先把shjc表select出来,然后再把它Update,最后Insert到ruku中去。
    这其实不用问的,把SQL语句放到SQL Server中执行一下就知道结果了。
      

  4.   

    是啊 应该2个SQL语句 么这样写过 也不推荐这样写。
      

  5.   

    这是两条语句啦,,SQL是可以执行的。
      

  6.   

    insert into ruku(jcmc,dj,ydj,cbs,syfw
                    ,xq,zdh,bianz,cbsj,kcmc,sl
                     ,xyr,xbdh,gysh,yxjch,jsbl)
    select jcmc,@xgdj,dj,cbs,syfw,xq,zdh,bianz,cbsj,kcmc,sl,xyr,xbdh,gysh,@yxjch,@jsbl from shjc 
    where jcmc=@jcmc and dj=@dj and cbs=@cbs 
    and xq=@xq  and rk_flag=0;
     update shjc 
    set rk_flag=1 
    where jcmc=@jcmc and dj=@dj and cbs=@cbs and xq=@xq就是2条sql语句  用了同样的参数。  规范的写法是用一个;号隔开
      

  7.   

    多条SQL语句,一起执行的,先INSERT后UPDATE
      

  8.   

    两个SQL语句,在sql server中可以这样写,但Access中是不支持这样写的,会报错。
      

  9.   

    参数化查询。@jcmc看做是一个变量,然后 conn.Parameters.Add("@jcmc", SqlDbType.Char).Value = jcmc; 对这个赋值, 
    这样可以最大化地防止SQL注入攻击
      

  10.   

    在SQL语语里也可以写成......jcmc='" +jcmc+ "'"  是一样的
      

  11.   

    如果是这样写的,就不要后面那句conn.Parameters.Add("@jcmc", SqlDbType.Char).Value = jcmc;了