2

次のコードを実行しようとしています。

    _cmd.CommandText = "SELECT * FROM category";
    MySqlDataReader ret;
    _cmd.Connection = _con;
    _con.Open();
    ret = _cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    _con.Close();

    return ret;     

それでも、奇妙なエラーが発生します。

指定されたキーはディクショナリに存在しませんでした。

接続文字列は web.config から正しく読み取られています (デバッガーを使用して確認できます)。同じconnectionString(データの挿入に使用される)を使用する他のメソッドもあり、それらは正しく機能します。私がここに欠けているものはありますか?!

これは私が呼び出そうとしている方法です:

  public MySqlDataReader ExecuteReader(String sql, MySqlParameter[] param)
    {
        if (param != null)
            _cmd.Parameters.AddRange(param);

        _cmd.CommandText = sql;
        MySqlDataReader ret;

        _con.Open();
        ret = _cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

        return ret;
    }

この Web サービスから呼び出されます。

[WebMethod]
        public string[] GetCategories()
        {
            String sql = "SELECT CategoryName FROM category";
            DatabaseHelper dh = new DatabaseHelper();
            MySqlDataReader dr = dh.ExecuteReader(sql, null);
            List<String> categories = new List<string>();
            while (dr.Read())
            {
                categories.Add(dr[0].ToString());
            }
            dr.Close();

            return categories.ToArray();
        }
4

0 に答える 0