关于@的问题

kerier 2008-05-29 09:57:29
我发现我机子上用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,
我不知道是怎么回事,
我的一位朋友,
他就不会出现这种问题,
是好好的,
不知道怎么回事,
知道的告诉一声,
谢谢了.
...全文
92 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡神在睡觉 2008-05-30
  • 打赏
  • 举报
回复
如果上面的方法都不行建议你找你程序里哪段跟这类似的的程序copy过来,做下修改,或许就能用了,Visio Studio总是出现这样的bug,快郁闷死了。。。。
wzy_love_sly 2008-05-29
  • 打赏
  • 举报
回复
 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());


是这个吗?
kerier 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wzy_love_sly 的回复:]
你是在哪执行这语句的?sql里吗?如果是sql里必须用exec 否则不行
[/Quote]

在C# dataset的查询生成器中生成的..
xyz254 2008-05-29
  • 打赏
  • 举报
回复
mark
wzy_love_sly 2008-05-29
  • 打赏
  • 举报
回复
你是在哪执行这语句的?sql里吗?如果是sql里必须用exec 否则不行
kerier 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wzy_love_sly 的回复:]
SQL codecreate 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会乱
[/Quote]

declare @name varchar(50)
set @name='c'
用过这个了,
照样没用
kerier 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wzy_love_sly 的回复:]
不是空格问题,
like '%ab%'

或like 'ab'
[/Quote]

就我机子上会出现这样的问题..
我的朋友他用就好好的..
kerier 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dupoutVIP 的回复:]
引用 3 楼 whoami333 的回复:
like '%'+@bookname+'%'
[/Quote]

这样弄过了..
照样出错..
wzy_love_sly 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 virusplayer 的回复:]
谢谢楼主了,我也正需要呢,期待答案,有答案一样要贴出来啊,
[/Quote]

什么问题?直接写@name肯定是不行的,
dupoutVIP 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 whoami333 的回复:]
like '%'+@bookname+'%'
[/Quote]
virusswb 2008-05-29
  • 打赏
  • 举报
回复
谢谢楼主了,我也正需要呢,期待答案,有答案一样要贴出来啊,
wzy_love_sly 2008-05-29
  • 打赏
  • 举报
回复
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会乱
whoami333 2008-05-29
  • 打赏
  • 举报
回复
like '%'+@bookname+'%'
mohugomohu 2008-05-29
  • 打赏
  • 举报
回复
这个,你确实加了空格
wzy_love_sly 2008-05-29
  • 打赏
  • 举报
回复
不是空格问题,
like '%ab%'

或like 'ab'

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧