string UserName=Common.AllUsers.UserLogined.UserName;//要传的username的值
            StringBuilder sa = new StringBuilder();
            sa.Append("select username,userpass,userpassagain,name,telephone");
            sa.Append("from userinformation");
            sa.Append("where username=@UserName");
            MySqlParameter[] pmts = new MySqlParameter[1];//另一个类里面有getDataTable_Pmts函数               pmts[0] = new MySqlParameter("@UserName",UserName  );
            DataTable dt = DB.getDataTable_Pmts(sa.ToString(), pmts);
运行以后总显示check the manual that corresponds to your MySQL server version for the right syntax to use near 'username='test'' at line 1,这是为什么啊(test 就是传上去的用户名)

解决方案 »

  1.   

    缺少空格了,在append时from和where的前面没有空格了,你可以在调试的时候看一下拼接后的字符串了
      

  2.   


      string UserName=Common.AllUsers.UserLogined.UserName;//要传的username的值
      StringBuilder sa = new StringBuilder();
      sa.Append("select username,userpass,userpassagain,name,telephone ");
      sa.Append(" from userinformation ");
      sa.Append(" where username=@UserName");
      MySqlParameter[] pmts = new MySqlParameter[1];//另一个类里面有getDataTable_Pmts函数 
      pmts[0] = new MySqlParameter("@UserName",UserName );
      DataTable dt = DB.getDataTable_Pmts(sa.ToString(), pmts);
      

  3.   

    sa.Append("select username,userpass,userpassagain,name,telephone");
    sa.Append(" from userinformation");
    sa.Append(" where username=@UserName");
    这样就行了
      

  4.   

    1. 一个是空格的问题,你要保证 from where前面有空格。
    2. 用下面的代码代替你的最后一格append:
       sa.Append("where username='"+@UserName+"'");
       sa.Append(@UserName);
       sa.Append("'");
       
       请注意,在sql里面,字符串是要加''的,除非是数字才不要加。这种错误在编程的时候容易忽略的
      

  5.   

    我以前通常都是这么做的,用F10进行调试,然后得出sql字符串,然后放到sql studio里面执行,通常就能知道自己错哪儿了
      

  6.   

    楼主,你把断点放在这句:
    DataTable dt = DB.getDataTable_Pmts(sa.ToString(), pmts);看看运行时sa到底是什么值,把它拷贝到查询分析器里,检查一下,就一目了然了。