2013-03-14 53 views
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轉換爲整型,並將性別轉換爲字符請幫助!我已經嘗試過上述轉換。我試過這aswel類型Int Cant轉換的參數

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)

+0

刪除'List Contacts = new List ();'在while循環之外。 – 2013-03-14 18:19:11

+0

可以clientid或性別在數據庫中爲空? – TalentTuner 2013-03-14 18:20:26

+0

「不工作」非常含糊。請描述您看到的錯誤。 – 2013-03-14 18:20:42

回答

2

如果您的存儲過程返回int參數(應該),你應該做這樣的

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

轉換如果結果爲空整數(或任何其他類型爲此事),轉換會是這樣:

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

如果這不適合你,你應該發佈你得到的異常消息。

+0

int clientId =(int)reader [「ClientID」]; char gender =(char)reader [「Gender」];這可以起作用thanx多 – 2013-03-14 18:32:55

+0

您可以在* ultra *罕見的情況下將您的字段「ClientID」更改爲「int」以外的其他字符,並將* else'部分更改爲'reader [「ClientID」],不要*拋出無效的轉換異常。 – 2013-03-15 14:49:58

0

嘗試

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

它可能會拋出異常,所以最好用int.TryParse方法,我問你的意見,如果這些字段可以在數據庫,那麼你SHD使用可空類型空。

相關問題