0
public List<Client> SearchBy(string proc, string var, string value)
    {
        List<Client> clients = new List<Client>();
        var reader = dal.ExecuteProc(proc, var, value);
        while (reader.Read())
        {
            List<Contact> Contacts = new List<Contact>();
            EnumFactory.ClientType type = new EnumFactory.ClientType();
            EnumFactory.Language language = new EnumFactory.Language();

            Client c = new Client(Convert.ToInt32(reader["ClientID"]), reader["Name"].ToString(), reader["Surname"].ToString(), reader["Address"].ToString(), reader["Email"].ToString(), Contacts, reader["Email"].ToString(), type, DateTime.Now, reader(Convert.ToChar(reader["Gender"]), language, reader["AdhocNotes"].ToString(), reader["Status"].ToString(), reader["Color"].ToString());
            clients.Add(c);
        }
        return clients;
    }

ClientID を整数に、性別を Char に変換するのに苦労しています。助けてください! 上記の変換を試しました。私はこのaswelを試しました

Client c = new Client(reader(Convert.ToInt32(["ClientID"]))

しかし、それもうまくいきません...私はストアドプロシージャリーダーの使用法にかなり慣れていません。検索しても結果が見つかりませんでした (見つかったソースはすべて、上記の int への変換方法を使用しています)

返信する前に : はい、フィールド、コンストラクター、およびプロパティは int 型であり、Char 問題も同様です。パラメータの構築により、コンストラクタの型が次のようになっていることがわかります (int、string、string、string、string、list、string、enum、date、char、enum、string、string、string)

4

2 に答える 2

2

ストアド プロシージャがintパラメーターを返す場合 (そうあるべきです)、次のように変換を行う必要があります。

int clientId = (int)reader["ClientID"];

結果が null 許容整数 (またはその他の型) の場合、変換は次のようになります。

int? clientId = (reader["ClientID"] is DBNull) ? (int?)null : (int)reader["ClientID"];

これがうまくいかない場合は、受け取った例外メッセージを投稿する必要があります。

于 2013-03-14T18:21:43.970 に答える
0

試してみてください

Convert.ToInt32(reader["ClientID"].ToString()] ,

例外がスローされる可能性があるため、コメントで尋ねたように int.TryParse メソッドを使用することをお勧めします。これらのフィールドがデータベースで null になる可能性がある場合は、Nullable Type を使用します。

于 2013-03-14T18:25:00.157 に答える