日期:2014-05-19  浏览次数:20454 次

SQL语句老是抱错,弄了好久没弄出来
本人在VS2003中用DataGrid来装载数据,并写了一个更新语句,如下:
//------------------------Bind   Data
#region   显示用户列表
private   void   ShowUserInfo()
{
string   ls_sql= "select   top   "+dg_UserInfo.PageSize+ "   id,x_usercode,x_username, 'usertype '=case   x_usertype   when   1   then   '销售商 ' "
+ "when   2   then   '供应商 '   end,   'enable '=case   x_enable   when   0   then   '未通过 '   when   1   then   '已通过 '   end   from   t_userinfo   where   ( "
+ "x_usertype=1   or   x_usertype=2   )   and   id   not   in   (select   top   "+anp_UserInfo.PageSize*dg_UserInfo.CurrentPageIndex+ "   id "
+ "   from   t_userinfo   where   (x_usertype=1   or   x_usertype=2)   order   by   id   asc)   order   by   id   asc ";
DataSet   ds=michael.GetData(ls_sql);
dg_CheckUser.DataSource=ds.Tables[0].DefaultView;
dg_CheckUser.DataBind();
}
#endregion
//--------------------------Update   Data
private   void   CheckUser_Enable(string   ls_id)
{
string   ls_sql= "update   t_userinfo   set   x_enable=case   x_enalbe   when   1   then   0   when   0   then   1   where   id= ' "+ls_id.ToString()+ " ' ";
michael.ExecSqlCommandAndWithOutReturn(ls_sql);
}
//-----------------------------Select   Data
private   void   dg_CheckUser_ItemCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)
{
string   ls_id= "0 ";
ls_id=Convert.ToInt32(e.Item.Cells[0].Text.Trim()).ToString();
if(e.CommandName== "Select ")
{
CheckUser_Enable(ls_id);
}
ShowUserInfo();
}
//----------------------------点击   “选择”——DataGrid上的一个“Select”Command命令后
//------------------------------出现如下错误:
Exception   Details:   System.Data.SqlClient.SqlException:   在关键字   'where '   附近有语法错误。
可是我放在查询分析器里面执行的时候又是正确的,不是是哪里出现了问题???
请各位高手指点指点~~等待ing~~~~~

------解决方案--------------------
DataSet ds=michael.GetData(ls_sql);

你在这句上打个断点,监视一下ls_sql的值,再发出来,或者到查询分析器中执行一下
------解决方案--------------------
你跟踪下SQL语句在程序里值是什么样的.估计是where那里和前面的字符连在一起了.
------解决方案--------------------
看着实在费劲。
你设置个断点调试下,把SQL语句提出来在SQL SERVER上运行下,可以找出原因。
------解决方案--------------------
string ls_sql= "select top "+dg_UserInfo.PageSize+ " id,x_usercode,x_username, 'usertype '=case x_usertype when 1 then '销售商 ' "


LZ这个ID前面有空格吗?