2012-02-17 43 views
1

下面的代碼似乎沒有將參數值插入到查詢中(查詢沒有返回任何內容)。如果我測試的DB該查詢(當然代替?筆者參數I型傳入的值和一些返回行。爲什麼呢?MySqlCommand似乎沒有傳遞參數

var conn = new MySqlConnection(connectionString); 

    MySqlCommand comm = new MySqlCommand("", conn); 

    comm.Parameters.Add(new MySqlParameter("?author", author)); //I've also tried AddWithValue method 

    comm.CommandText = .....; 

      conn.Open(); 
      MySqlDataReader myReader = comm.ExecuteReader(); 

      try 
      { 
       while (myReader.Read()) 
       { 
        //unreachable code because nothing is returned 
       } 
      } 
      catch 
      { 
       myReader.Close(); 
       conn.Close(); 
       categoriesList.Clear(); 
      } 
      finally 
      { 
       myReader.Close(); 
       conn.Close(); 
      } 

回答

1

由於您使用MySQLCommand不要在參數的名稱添加?

,如果你有這樣的查詢:

comm.CommandText = "INSERT INTO tableName(colA) VALUES (@param1)"; 
comm.CommandType = CommandType.Text; 

,那麼你必須這樣做的:

comm.Parameters.AddWithValue("param1", "yourValue"); 

UPDATE

假設你有查詢與LIKE條件:

"SELECT * FROM WHERE colA Like '%value%'" 

那就試試這個:

comm.CommandText = "SELECT * FROM WHERE colA Like CONCAT('%', @param1, '%'"); 
comm.Parameters.AddWithValue("param1", "yourValue"); 
+0

sql snippet:'AND b.AuthorNames LIKE'%@ author%'''然後'comm.Parameters.AddWithValue(「author」,author);'仍然沒什麼 – user1215114 2012-02-17 02:41:15

+0

@ user1215114您應該使用'CONCAT'函數。我的答案現在已更新。 – 2012-02-17 02:49:37

+0

CONCAT功能解決了這個問題。謝謝 ! – user1215114 2012-02-17 02:55:22

0

爲.CommandText需要將之前這可能是一樣簡單在.Parameters.Add語句所以:

comm.CommandText = .....; 
    comm.Parameters.Add(new MySqlParameter("?author", author)); //I've also tried AddWithValue method