在c#底下写了一个sql语句,在查询分析器里面调试没有问题,但是在vs2005底下总有问题,麻烦高手指点下,整个查询函数代码如下:
 public DataSet CheckMyLoad(string fileName, string fileLibrary, string fileMytimefrom, string fileMytimeto,int pageNum)//与数据库比较,返回比较结果
    {
         int pageNumAll = pageNum * 10;
        int pageNumNotin = (pageNum - 1) * 10;
        string strSql = " select TOP " +
            pageNumAll +
            "  TB_FileInfo.FileName,TB_Store.StoreName,TB_FileInfo.FileType,TB_FileInfo.UpLoadDate,TB_FileInfo.FileState " +
            " from TB_FileInfo left join TB_Store on TB_FileInfo.StoreID = TB_Store.StoreID where 1=1 ";
        if(fileName!=""){ strSql+="AND TB_FileInfo.FileName='" + 
            fileName +
            "'" ;} 
        if(fileLibrary !=""){ strSql+="AND TB_FileInfo.StoreID='" + 
            fileLibrary + 
            "'";}
        if(fileMytimefrom !="") { strSql+="ADN TB_FileInfo.UpLoadDate >='" + 
            fileMytimefrom + 
            "'";} 
        if(fileMytimeto!="") {strSql+="ADN TB_FileInfo.UpLoadDate <= '" + 
            fileMytimeto + 
            "' ";}
            strSql += "AND TB_FileInfo.FileName NOT IN ( select top " +
           pageNumNotin +
           " TB_FileInfo.FileName from TB_FileInfo left join TB_Store on TB_FileInfo.StoreID = TB_Store.StoreID where 1=1";
        if(fileName!=""){ strSql+="AND TB_FileInfo.FileName='" + 
            fileName +
            "'" ;} 
        if(fileLibrary !=""){ strSql+="AND TB_FileInfo.StoreID='" + 
            fileLibrary + 
            "'";}
        if(fileMytimefrom !="") { strSql+="AND TB_FileInfo.UpLoadDate >='" + 
            fileMytimefrom +
            "'";}
        if(fileMytimeto!="") {strSql+="AND TB_FileInfo.UpLoadDate <= '" + 
            fileMytimeto +"'";}
            strSql += ")"; //SQL语句
       
        return dl.RunSql_ds(strSql, "connStrFile");
    }

解决方案 »

  1.   

    if(fileMytimefrom !="") { strSql+="ADN TB_FileInfo.UpLoadDate >='" + 
                fileMytimefrom + 
                "'";} 
            if(fileMytimeto!="") {strSql+="ADN TB_FileInfo.UpLoadDate <= '" + 
                fileMytimeto + 
                "' ";} 
    这里应该是and吧!  另外建议and 之前加一个空格 
      

  2.   

    if(fileName!=""){ strSql+="AND TB_FileInfo.FileName='" +
                fileName +
                "'" ;}
            if(fileLibrary !=""){ strSql+="AND TB_FileInfo.StoreID='" +
                fileLibrary +
                "'";}
            if(fileMytimefrom !="") { strSql+="ADN TB_FileInfo.UpLoadDate >='" +
                fileMytimefrom +
                "'";}
            if(fileMytimeto!="") {strSql+="ADN TB_FileInfo.UpLoadDate <= '" +
                fileMytimeto +
                "' ";} 楼主啊.
      

  3.   

    看的眼花 
    楼主的AND 前面都没有空格呀。
    而且感觉引号是不是也多了。我真的眼花了,可能是幻觉!
      

  4.   

    可不是吗,这个ADN肯定是and错拼,另外,累加的字符串如果不注意用空格隔离,组合出来的SQL语句就会有词汇粘连的现象
      

  5.   

    谢谢大家了,可是改了and还是有问题啊.麻烦大家再看看
      

  6.   

    以下是报错信息,可是感觉不着边际啊
    错误 1 应输入 ) c:\inetpub\wwwroot\9NiuMDL\Page\Show\MyUpload.aspx.cs 62 60 http://localhost/9NiuMDL/
    错误 2 类、结构或接口成员声明中的标记“,”无效 c:\inetpub\wwwroot\9NiuMDL\Page\Show\MyUpload.aspx.cs 62 71 http://localhost/9NiuMDL/
    错误 3 应输入标识符,“string”是关键字 c:\inetpub\wwwroot\9NiuMDL\Page\Show\MyUpload.aspx.cs 62 96 http://localhost/9NiuMDL/
    错误 4 应输入 ; c:\inetpub\wwwroot\9NiuMDL\Page\Show\MyUpload.aspx.cs 62 115 http://localhost/9NiuMDL/
    错误 5 类、结构或接口成员声明中的标记“return”无效 c:\inetpub\wwwroot\9NiuMDL\Page\Show\MyUpload.aspx.cs 73 9 http://localhost/9NiuMDL/
    错误 6 类、结构或接口成员声明中的标记“(”无效 c:\inetpub\wwwroot\9NiuMDL\Page\Show\MyUpload.aspx.cs 73 28 http://localhost/9NiuMDL/
    错误 7 类、结构或接口成员声明中的标记“,”无效 c:\inetpub\wwwroot\9NiuMDL\Page\Show\MyUpload.aspx.cs 73 35 http://localhost/9NiuMDL/
    错误 8 应输入类型、命名空间定义或文件尾 c:\inetpub\wwwroot\9NiuMDL\Page\Show\MyUpload.aspx.cs 75 1 http://localhost/9NiuMDL/
      

  7.   

    ADN本来是加红的源代码啊,不应该出来的,这是CSDN的转贴bug.
      

  8.   

    string strSql = " select TOP " + 
                pageNumAll.ToString() +" " + 
                "  TB_FileInfo.FileName,TB_Store.StoreName,TB_FileInfo.FileType,TB_FileInfo.UpLoadDate,TB_FileInfo.FileState " + ........好乱  - -
      

  9.   

    语法没问题的话,建议LZ调试,在这条语句这里断点,运行玩这个赋值语句后。观察整个strSql的值,就知道问题在哪里。
      

  10.   

    不要用这种方式 拼SQL语句,建议楼主用@参数 方式写SQL语句,比较清晰且不容易出错。
      

  11.   


     strSql += "AND TB_FileInfo.FileName NOT IN ( select top " + 
              pageNumNotin + 
              " TB_FileInfo.FileName from TB_FileInfo left join TB_Store on TB_FileInfo.StoreID = TB_Store.StoreID where 1=1"; 这条语句包含一个子查询,里面缺了一个“)”,是在组合条件之后最后用
    strSql += ")"; //SQL语句 来封闭的,但是看那几个组合条件语句的写法:
            if(fileName!=""){ strSql+="AND TB_FileInfo.FileName='" + 
                fileName + "'" ;} 
            if(fileLibrary !=""){ strSql+="AND TB_FileInfo.StoreID='" + 
                fileLibrary + "'";} 
            if(fileMytimefrom !="") { strSql+="AND TB_FileInfo.UpLoadDate >='" 
              + fileMytimefrom + "'";} 
            if(fileMytimeto!="") {strSql+="AND TB_FileInfo.UpLoadDate <= '" + 
                fileMytimeto +"'";} 
    其中的空格处理稍有不慎,最后就会导致错误语法,使后来的右括号无法封闭进来。所以初步看1=1 " 或者 AND之前应加空格。
      

  12.   

    看到拼的SQL就恶心。。
    恶。。
      

  13.   

    建議LZ可以將生成的SQL Text 先輸出來放置Query里執行下,最好能夠將語句與語句件用分號隔開,能換行的話最好要換行哦,