我发现我机子上用C#编程的时候,
在DATASET用查询生成器建立查询的时候,
SELECT BookID, BookName, TypeName, Press, PressDate, Author, Price
FROM book
WHERE (bookname like @bookname)@bookname我明明输入的@和bookname之间是没有空格的,
然后就会报错
说是"@"附近的WHERE子句错误.无法分析查询文本.
接着还有一个报错
SQL执行错误
已执行SQL语句:select bookid,bookname,typename,press,pressdate,author,price from book 
where(bookname like @bookname)
错误源:SQLSRV32.DLL
错误信息:ERROR [42000][Microsoft][ODBC SQL Server Driver][SQL Server]必须声明标量变量"@bookname" 然后点确实以后,本来是@bookname就会变成@ bookname,
我不知道是怎么回事,
我的一位朋友,
他就不会出现这种问题,
是好好的,
不知道怎么回事,
知道的告诉一声,
谢谢了.

解决方案 »

  1.   

    不是空格问题,
    like '%ab%'或like 'ab'
      

  2.   

    create  table  #(s varchar(50))
    insert into # select 'abc'declare @name varchar(50)
    set @name='c'
    exec('
    select * from #
    where s like''%'+ @name +'%''')使用变量要用exec了,如果用c#,最好就拼好了,要不用sql会乱
      

  3.   


    什么问题?直接写@name肯定是不行的,
      

  4.   


    declare @name varchar(50)
    set @name='c'
    用过这个了,
    照样没用
      

  5.   

    你是在哪执行这语句的?sql里吗?如果是sql里必须用exec 否则不行
      

  6.   


    在C# dataset的查询生成器中生成的..
      

  7.   

     DataTable dt = new DataTable();
            DataColumn col1 = new DataColumn("id", typeof(string));
            DataColumn col2 = new DataColumn("name", typeof(string));
            dt.Columns.Add(col1);
            dt.Columns.Add(col2);
            DataRow row1 = dt.NewRow();
            row1["id"] = "0001";
            row1["name"] = "aaa";
            dt.Rows.Add(row1);        DataRow row2 = dt.NewRow();
            row2["id"] = "0002";
            row2["name"] = "bbb";
            dt.Rows.Add(row2);        string name = "b";
            Response.Write(dt.Select("name like'%" + name + "'", "")[0]["name"].ToString());是这个吗?
      

  8.   

    如果上面的方法都不行建议你找你程序里哪段跟这类似的的程序copy过来,做下修改,或许就能用了,Visio Studio总是出现这样的bug,快郁闷死了。