Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql VB.NET中的SQL查询不断给我一个通配符错误_Mysql_Vb.net - Fatal编程技术网

Mysql VB.NET中的SQL查询不断给我一个通配符错误

Mysql VB.NET中的SQL查询不断给我一个通配符错误,mysql,vb.net,Mysql,Vb.net,我正在尝试使用VB.NET在我的数据库上执行此SQL查询: Dim sql As New MySqlCommand("SELECT * FROM `personer` WHERE epost LIKE %" _ & txbEpost.Text, tilkobling) 问题是它总是出错,我不知道为什么。它一直说“gmail.com”附近有语法错误(考虑到我用txbEpost.Text编写了gmail.com)。但是在我的web界面MySQL中运行完全相同的查询会

我正在尝试使用VB.NET在我的数据库上执行此SQL查询:

Dim sql As New MySqlCommand("SELECT * FROM `personer` WHERE epost LIKE %" _
            & txbEpost.Text, tilkobling)
问题是它总是出错,我不知道为什么。它一直说“gmail.com”附近有语法错误(考虑到我用txbEpost.Text编写了gmail.com)。但是在我的web界面MySQL中运行完全相同的查询会产生预期的结果


我做错了什么?

代码中的第一个问题是字符串值周围缺少引号

"... WHERE epost LIKE '%" & txbEpost.Text &"'"
但是,这个查询应该使用参数来完成,以避免sql注入和其他解析问题(如果文本框包含一个引号怎么办?)


你好,我觉得应该行

MySqlCommand("SELECT * FROMpersonerWHERE epost LIKE '%" _
            & txbEpost.Text & "'", tilkobling)
因为您的sql字符串缺少“.”。报价是必需的

这个怎么样:

MySqlCommand(“像“%”一样从PersonerWhere epost中选择*& txbEpost.Text&“%”,tilkobling)


您应该使用mysqlparameter这对SQL注入是开放的。在回答这类问题时,总是建议参数,并养成自己动手的习惯。Steve的答案显示了doneThanks@Bugs应该是怎样的,如果有,请在这里显示你的答案。没问题。至于回答,通常我会回答,但是我不需要回答,因为史蒂夫已经做得很好了。我也会这样做。如果在类似条件str.Format(“{0}{1}{2}”、“%”、“%”、txbEpost.Text、“%”)之后这样使用,那么提供重复答案是没有意义的。连接字符串可能导致SQL注入。看一看。它可能会被证明是有用的。这对SQL注入是开放的。在回答这类问题时,总是建议参数,并养成自己动手的习惯。史蒂夫的回答说明了应该怎么做。嗯,我试过了,但现在当我尝试填充我的数据表时,它说输入数据的格式不正确。这是代码:当txbEpost.Text等于“gmail.com”时抛出一个错误@Steve是否值得将
%
放在
像+'%'+@epost
?当我将
MySqlDbType.VarChar
替换为
“%”&txbEpost.Text
,并删除
.Value
时,效果非常好!谢谢@gloriousCatnip嗯,不清楚你改变了什么。在上面的代码中,Add方法返回一个参数,其值应设置为希望在LIKE表达式中使用的字符串(减去引号)。您能发布您的实际行吗?@Bugs是的,我认为也可以使用该语法,但如果可能,我会尽量避免命令文本中的任何连接。也许这只是一种习惯。
MySqlCommand("SELECT * FROMpersonerWHERE epost LIKE '%" _
            & txbEpost.Text & "'", tilkobling)