日期:2014-05-20  浏览次数:20407 次

根据传值,查询条件后update的问题
我要实现的功能是:根据网址传来的值out_trade_no,查询表Orders当中的OrderId,根据OrderId字段更新表OrderStatus当中的status的值.表Orders和表OrderStatus用OrderId关联.可我写如下语句后,并没有更新成功.提示:
列前缀   'Orders '   与查询中所用的表名或别名不匹配。
列前缀   'Orders '   与查询中所用的表名或别名不匹配。  

我应怎么样写才能达到我上述功能呢?

CS:
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                SqlConnection   conn   =   new   SqlConnection(ConfigurationManager.ConnectionStrings[ "SQLConnString1 "].ConnectionString);

                SqlCommand   updatecmd   =   new   SqlCommand( "update   OrderStatus   set   OrderStatus.Status=@Status   where   Orders.CreditCard=@out_trade_no   and   OrderStatus.OrderId=Orders.Orderid ",   conn);
                //SqlCommand   updatecmd   =   new   SqlCommand( "UPDATE   OrderStatus   set   Status=@Status ",   conn);

                updatecmd.Parameters.Add(new   SqlParameter( "@out_trade_no ",   SqlDbType.VarChar,   50));
                updatecmd.Parameters.Add(new   SqlParameter( "@Status ",   SqlDbType.VarChar,   50));
                string   out_trade_no   =   Request.QueryString[ "out_trade_no "];
                if   (out_trade_no   ==   null)
                {
                        //没有此订单号,就出错.
                        Response.Write( "测试请带?out_trade_no=20070227231126968 ");

                }
                else
                {
                        updatecmd.Parameters[ "@out_trade_no "].Value   =   out_trade_no;//按时(详细到毫秒)生成的订单流水号,是我们提交给支付宝后支付宝又返回来的,第一次提交时在表Orders的creditcard例中,在本地系统中必须唯一.
                        updatecmd.Parameters[ "@Status "].Value   =   "OK ";

                }

                        conn.Open();

                        updatecmd.ExecuteNonQuery();

                        conn.Close();
        }

}

------解决方案--------------------
代码逻辑上有问题。
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ "SQLConnString1 "].ConnectionString);

SqlCommand updatecmd = new SqlCommand( "update OrderStatus set Status=@Status
where OrderId IN (Select Orderid From Orders where Orders.CreditCard=@out_trade_no) ", conn);

updatecmd.Parameters.Add(new SqlParameter( "@out_trade_no ", SqlDbType.VarChar, 50));