2013-05-04 76 views
1

有人能告诉我这个命令有什么问题吗?我收到一个错误。我使用c#和mysql数据库。LIKE命令Mysql

public static DataSet getInstructorListSearchEmail(string instemail) 
     { 
      DB.connectToDb(); 
      DB.DBOpen(); 

     DataSet ds = new DataSet(); 
     try 
     { 
      string comText = "select * from instructor where Instructor_email like %instemail"; 
      MySqlCommand com = new MySqlCommand(comText, DB.Conn); 
      com.Parameters.Add("instemail", MySqlDbType.VarChar, 200).Value = instemail; 
      MySqlDataAdapter adapter = new MySqlDataAdapter(com); 
      adapter.Fill(ds); 
+1

您可能会如此善良,并告诉我们例外 – jAC 2013-05-04 13:32:44

+0

错误是什么? – 2013-05-04 13:33:42

+0

你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在第1行'%instemail'附近使用正确的语法。 – user2325116 2013-05-04 13:34:05

回答

5

眼看现在你用你需要修改您的查询字符串,改成类似

string comText = "select * from instructor where Instructor_email like @instemail"; 
com.Parameters.AddWithValue("@instemail", "%" + instemail); 

或该接受的参数会工作,以及使用单引号,丢弃参数CMD参数但我认为使用参数更好。

string comText = "select * from instructor where Instructor_email like '%" + instemail + "'"; 
+0

最后一个例子非常糟糕;它很容易受到SQL注入的影响。 – Halfgaar 2017-06-23 13:51:37

2

您需要直接添加通配符的参数值,而不是在参数占位符之前的SQL命令文本(尝试的方式使用参数前缀)

string comText = "select * from instructor where Instructor_email like @instemail"; 

所以你的命令参数应该是

com.Parameters.Add("@instemail", MySqlDbType.VarChar, 200).Value = "%" + instemail; 
0

你只需要使用单引号如;

string comText = "select * from instructor where Instructor_email like @instemail";