Mysql
 sql >> база данни >  >> RDS >> Mysql

Предайте MySql различни стойности в c# низ

Ако skill2 полето е от тип Char\VarChar2\NChar и т.н. трябва да изброим записи напр.

using (MySqlConnection cons = new MySqlConnection(MyConString)) {
  cons.Open();

  string query = 
    @"SELECT DISTINCT(skill2) AS skills 
        FROM agentdetails";

  using (new MySqlCommand(query, cons)) {
    using (var reader = command.ExecuteReader()) {
      // collection to store skills
      HashSet<string> hs = new HashSet<string>();

      // Enumerate all records
      while (reader.Read()) 
        hs.Add(Convert.ToString(reader[0])); // and add them into a collection

      // join collection into string
      string skills = string.Join(",", hs.Select(item => $"'{item}'"));

      //TODO: put relevant code here (e.g. return skills)
    } 
  }
}

Редактиране: $"..." е интерполация на низ , ако използвате по-ранна версия на c# / .Net, която не поддържа го (вижте коментара по-долу) можете да опитате string.Format вместо това:

string skills = string.Join(",", hs.Select(item => string.Format("'{0}'", item)));

Редактиране 2: Не кодирайте твърдо заявки, но параметризират тях; уви, не можете да подадете колекция в IN като единичен параметър:

using (MySqlConnection con2 = new MySqlConnection(MyConString)) {
  con2.Open();

  string hcount = 
    string.Format( @"SELECT SUM(headCount) AS THC, 
                            date AS date1 
                       FROM setshrinkage 
                      WHERE skill IN ({0}) 
                        AND date BETWEEN @today1 AND @today2 
                   GROUP BY date", skill);

  using(MySqlCommand cmd2 = new MySqlCommand(hcount, con2)) {
    //TODO: provide actual RDBMS type - Add(...) instead of AddWithValue(...)
    cmd2.Parameters.AddWithValue("@today1", today1);    
    cmd2.Parameters.AddWithValue("@today2", today2);    

    using (MySqlDataReader myread2 = cmd2.ExecuteReader()) {
      while (myread2.Read()) {
        //TODO: provide relevant code here
      }
    }
  }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Хвани изключение за вмъкване на дублиран ключ

  2. Как да получите преброените стойности с разделител запетая като стойност на един ред

  3. MySQL, заявката е твърде бавна, как да я подобрим?

  4. Как да получите последния запис във всяка група в MySQL

  5. executemany за MySQLdb грешка за голям брой редове