SQL Like语句在Visual Basic中不起作用

时间:2012-11-27 11:27:55

标签: sql vb.net dataset sql-like

Dim strText As String = tbRefine.Text
Dim sql As String = "SELECT user_name,forename,surname,game_cash,reg_group FROM tblGame WHERE user_name LIKE '" + strSearchText + "' & '*'"
Dim dsRefine As New DataSet
GetDataset(sql, "tblGame", dsRefine)

MsgBox(dsRefine.Tables("tblGame").Rows(0).Item(2).ToString)

这不起作用,它崩溃并说数据集中没有任何内容。 我知道数据集函数之前的工作成功。 当我将sql语句打印到microsoft访问时,它工作正常。我做错了什么

5 个答案:

答案 0 :(得分:6)

试试这个:

"SELECT user_name,forename,surname,game_cash,reg_group
 FROM tblGame
 WHERE user_name LIKE '%" + strSearchText + "%'"

答案 1 :(得分:1)

尝试在您的行中使用RTRIM()函数:

Dim sql As String = "SELECT user_name,forename,surname,game_cash,reg_group FROM tblGame WHERE RTRIM(user_name) LIKE '" + strSearchText + "' & '*'"

答案 2 :(得分:0)

你喜欢的前导或尾随%符号怎么样?

目前你最终会得到一个where子句,如:

LIKE 'searchtext''*'

看起来有点奇怪(我假设SQL服务器?)。

答案 3 :(得分:0)

使用SQL参数更明智,因为您的方法对SQL注入是开放的。下面的链接将有助于如何格式化SQL语句。我也建议通过商店程序来做,但是帽子可选......

http://forums.asp.net/t/1256985.aspx

答案 4 :(得分:0)

我认为还有一件事要提到: 在VB / VBA / MS-Access中,“ *”通配符适用于“像”运算符,但在T-SQL中不起作用。 在T-SQL中,“ Like”运算符的正确通配符为“%”。 这就是为什么此T-SQL语句:

Select... WHERE ... LIKE 'sText*'

在MS-SQL(使用T-SQL)中不返回任何数据且没有任何语法错误,但在MS-Access中有效。