2016-10-15 53 views
0

首先,我是一個初學者,有這個東西,所以請忍受我在這裏。IEnumerable從mySQL連接打印出單個實體

所以,我想從xCode的Web服務中獲取數據。因此,我建立一個web服務,可以在mySql中獲取數據並以json格式顯示它們(當im完成時)。

但是,現在,我不是很遠... 我已經建立了我的數據庫,它是活在服務器上。

我在我的web.config中創建了連接字符串,並且我在下面的代碼中嘗試建立連接,嘗試獲取並顯示ID = 1的行。因此我希望它顯示我的數據庫中的所有實體,但這是一個很好的開始。

我覺得我的連接正常,(不知道如何測試它,除了只是讓打印我的網頁上從數據庫的東西)

然而,我在我的代碼說

得到一個錯誤
cannot implicitly convert type string to 'system.collections.generic.ienumerable<string>' 

你可能會說它的錯誤解決了另一個地方在stackoverflow,但沒有一個我似乎無法理解如何解決它。

 MySql.Data.MySqlClient.MySqlConnection mySqlConnection; 
     MySql.Data.MySqlClient.MySqlCommand cmd; 
     String queryStr; 

    public IEnumerable<String> Get() 
    { 

     String connString = System.Configuration.ConfigurationManager.ConnectionStrings["MySql"].ToString(); 
     mySqlConnection = new MySql.Data.MySqlClient.MySqlConnection(connString); 

     mySqlConnection.Open(); 
     queryStr = "SELECT * FROM `CustomerDb` WHERE 'ID' = '1'"; 
     cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, mySqlConnection); 
     cmd.ExecuteReader(); 
     mySqlConnection.Close(); 

     return queryStr;    
    } 

非常感謝您提前。

UPDATE

我已經做這些構造函數爲我的數據庫實體

public int ID { get; set; } 
    public string Name { get; set; } 
    public string Address { get; set; } 
    public string City { get; set; } 
    public string Category { get; set; } 
+0

您正在返回的查詢(一個字符串)不是查詢的結果(即你don'even嘗試讀取) – Steve

+0

我明白了IEnumerable是打印列表的替代形式,我可以調用的foreach。但我怎麼會打印出我的整個表,我不知道。 –

+0

你的方法聲明它將返回一個IEnumerable 。不是DataTable。因此,您應該循環查詢獲得的結果並構建IEnumerable以返回給調用者。目前還不清楚你真的想要返回什麼。如果你想返回整個表CustomerDb,那麼你使用閱讀器來填充一個DataTable – Steve

回答

0

問題是你試圖返回一個字符串,其中的功能您的返回類型獲得()是IEnumerable的。 我想你需要得到你從表中選擇,但不是你的查詢字符串,對不對?

MySql.Data.MySqlClient.MySqlConnection mySqlConnection; 
    MySql.Data.MySqlClient.MySqlCommand cmd; 
    String queryStr; 

public IEnumerable<String> Get() 
{ 

    String connString = System.Configuration.ConfigurationManager.ConnectionStrings["MySql"].ToString(); 
    mySqlConnection = new MySql.Data.MySqlClient.MySqlConnection(connString); 

    mySqlConnection.Open(); 
    queryStr = "SELECT * FROM `CustomerDb` WHERE 'ID' = '1'"; 
    cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, mySqlConnection); 
    SqlDataReader reader = cmd.ExecuteReader(); 
    while (reader.Read()) 
    { 
     yield return reader["Name"]; // Assume you want name in your result. 
    } 

    mySqlConnection.Close(); 

} 
+0

構造函數最好我想我的查詢只是 「SELECT * FROM' CustomerDb'「 我不明白你的功能在做什麼? –

+0

它從數據庫中讀取查詢的結果。我假設你的Get()函數試圖返回結果,但不僅僅是查詢的權利? –

+0

我只是得到一堆的錯誤。 sqldatareader做什麼?我的意思是,我不會例如。把它放在一個foreach循環中並以xml格式打印出所有實體? –