Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chuyển các giá trị riêng biệt của MySql vào một chuỗi c #

Nếu skill2 trường thuộc loại Char\VarChar2\NChar v.v ... chúng ta phải liệt kê hồ sơ, ví dụ:

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)
    } 
  }
}

Chỉnh sửa: $"..." là một nội suy chuỗi , nếu bạn sử dụng phiên bản ealier của c # / .Net mà không hỗ trợ nó (xem bình luận bên dưới) bạn có thể thử string.Format thay vào đó:

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

Chỉnh sửa 2: Không mã cứng truy vấn, nhưng tham số hóa họ; than ôi, bạn không thể chuyển một bộ sưu tập vào IN dưới dạng một tham số duy nhất:

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. Codeigniter, mysql, select_max và thêm 1 trước khi chèn một bản ghi khác

  2. Tôi có nên chỉ sử dụng Sao lưu tự động AWS RDS hoặc Ảnh chụp nhanh DB không?

  3. Làm thế nào để sao lưu và khôi phục cơ sở dữ liệu MySQL?

  4. Tôi không tìm thấy bất kỳ lỗi nào. Mã này hoạt động tốt. Cập nhật dữ liệu của tôi một cách hoàn hảo. Nhưng 1 lỗi đang hiển thị

  5. MySQL timeout trong powershell