vb.net SQL 模糊查询出错,要崩溃了!!!!

麒皑鹭 2009-07-27 09:25:46
出错地方:SQLString = " SELECT * FROM BookDetails WHERE '" & finditem & "' LIKE '%" & TextBoxFindInput.Text & "%' "
执行语句就省了,没错。

说明:
BookDetails是一张书籍信息表,字段有SN(书籍编号)………………
finditem As String,通过复选框,编程实现单选,获得查找属性,如 语句 finditem="SN",通过书籍编号查询,然后表中有SN列为"C1185"的记录。
TextBoxFindInput Is TextBox ,用来记录搜索条件。
比如我在TextBoxFindInput中输入"C11",并选择通过SN编号查询,然后单击查询按钮,会弹出如下描述:
语法错误(操作符丢失)在查询表达式'SN LIKE '%C11%’’中。

真不知道那里错了,本人快崩溃了,望各位大侠帮忙解决!
...全文
359 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
麒皑鹭 2009-07-29
  • 打赏
  • 举报
回复
我知道哪里错了,原来是语句中 LIKE后面的空格,我用的全角!长度是半角的两倍!心力憔悴,真是郁闷啊!
大家以后一定要吸取教训啊!
cnapc 2009-07-28
  • 打赏
  • 举报
回复
用在代码的开头,IDE是会自动转换成注释符号
但文本中应该是不会自动转换的,因为它不知道你是不是有意这样写。
cnapc 2009-07-28
  • 打赏
  • 举报
回复
用“”号括住了就不一定会自动转换了
偶刚才试过了,楼主应该还没试

[Quote=引用 11 楼 wjq726 的回复:]

不是全角、半角的问题,我用的Visual Studio 2008 ,即使错了,他会自动转换。
[/Quote]
SK_Aqi 2009-07-28
  • 打赏
  • 举报
回复
调试后sql到底是什么?把它放在sql server 中执行一下
cnapc 2009-07-28
  • 打赏
  • 举报
回复
跟踪下,到企业管理器中调试下就知道了。
如果它证明语句没问题,你要检查下你的代码了,服务器是不会错的
古今多少事 2009-07-28
  • 打赏
  • 举报
回复
先不用LIKE和变量试试……
另,出错时看看COMMAND查询字符串是什么……一步一步纠正……
麒皑鹭 2009-07-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gjunjun_jun 的回复:]
引用 7 楼 cnapc 的回复:
’号是不是全角的?


应该是单引号是全角符号的问题,我以前也碰到过,
[/Quote]

不是全角、半角的问题,我用的Visual Studio 2008 ,即使错了,他会自动转换。
aaajedll 2009-07-28
  • 打赏
  • 举报
回复
楼上的看法,可以去试试看,应该是符号的全半角问题
gjunjun_jun 2009-07-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cnapc 的回复:]
’号是不是全角的?
[/Quote]

应该是单引号是全角符号的问题,我以前也碰到过,
xcq123604 2009-07-28
  • 打赏
  • 举报
回复
declare @strSql NVARCHAR(4000)
declare @name VARCHAR(7)
declare @value VARCHAR(7)

set @name = 'GoodsId'
set @value = '1'
set @strSql = 'select * from *** where '
set @strSql = @strSql + @name + ' like ''%'+ @value + ''''
EXEC sp_executesql @strSql

可以參照一下上面寫的,上面的已經測試通過。
cnapc 2009-07-28
  • 打赏
  • 举报
回复
’号是不是全角的?
cnapc 2009-07-28
  • 打赏
  • 举报
回复
语法错误(操作符丢失)在查询表达式'SN LIKE '%C11%’
’--> '
麒皑鹭 2009-07-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 asdfy 的回复:]
这样试试:
SQLString = " SELECT * FROM BookDetails WHERE [" & finditem & "] LIKE '%" & TextBoxFindInput.Text & "%' "
[/Quote]
这个我也试过,也会报错啊,' [SN] LIKE '%C11%' ' .

SQLString = "SELECT * FROM BookDetails WHERE " & finditem & " LIKE '%" & TextBoxFindInput.Text & "%' " 这个写法,应该是没有问题的,比如 finditem=“SN”,TextBoxFindInput.Text="C11" 的话,通过字符串连接符 & 连接,应该是得到 "SELECT * FROM BookDetails WHERE SN LIKE '%C11' " ,有问题吗? 感觉没有啊! 为什么报错呢? 极度崩溃!!!!
a854468521 2009-07-27
  • 打赏
  • 举报
回复
使用参数进行查询:
"SELECT * from Tabls WHERE name like '%' + @subString + '%'"
参数化的意义在于把对应的值从参数中提供,对于like语句,like后面的值则包括了单引号中的所有部分,包括百分号(%),因此在参数化like对应的值时,应该把百分号移到参数值中提供,像这样:

Cmd.Parameters["@KeyWord"].Value = "%" + StrKeyWord + "%";

可别奢想在sql语句中像这样的样子:

Select * From [TableName] Where [Column1] like mailto:%20%@KeyWord

不会报错,不过你不可能查询到想要的结果

古今多少事 2009-07-27
  • 打赏
  • 举报
回复
这样试试:
SQLString = " SELECT * FROM BookDetails WHERE [" & finditem & "] LIKE '%" & TextBoxFindInput.Text & "%' "
麒皑鹭 2009-07-27
  • 打赏
  • 举报
回复
不好意思,楼上的写法我是程序里写的,楼上写的理论上是对的,但仍是那个问题。如果照我发帖的运行,得到的是'‘SN’ LIKE '%C11%’’ 错误,帖子写的那个错误正式楼上这种情况下运行得到。
贝隆 2009-07-27
  • 打赏
  • 举报
回复
SQLString = "SELECT * FROM BookDetails WHERE " & finditem & " LIKE '%" & TextBoxFindInput.Text & "%' "

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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