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: ハードコードしないでください クエリ、ただし parametrize 彼ら;残念ながら、コレクションを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. 変数がNULLかどうかを確認し、MySQLストアドプロシージャで設定するにはどうすればよいですか?

    2. 一般的なMySQLエラー:「通信パケットの読み取り中にエラーが発生しました」

    3. Oracleでスタッフ関数を使用する方法

    4. 2つの異なるデバイスが同じGCM登録IDを持つことはできますか?