根据传值,查询条件后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));