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前面有空格吗?