0

編輯:我解決了我的問題,但如果你有任何添加請做。由於從MySql返回結果的麻煩

注:我沒有創建它的創建由WordPress的託管在GoDaddy的與我的網站

我有一個名爲「WordPress的」 MySQL數據庫(爲清楚起見)的DB。我希望能夠從我的博客中抓取最新的帖子,並在着陸頁上顯示我的網址。 所以我的想法是這樣的:連接到MySql數據庫,運行查詢來抓取最近的帖子,顯示帖子。

我建立一個類來處理的連接,並處理該請求:

public class DAL 
    { 
     private string connectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=[server here]; PORT=[port]; DATABASE=wordpress; 
      USER=[user name here]; PASSWORD=[password here];"; 
     private OdbcConnection blogConnection; 

     public DAL() 
     { 
      blogConnection = new OdbcConnection(connectionString); 
     } 

     public String[] GetRecentPost() 
     { 
      string queryString = "SELECT * FROM RecentPost"; 
      String[] recentPost = new String[3]; 

      //ODBC 
      blogConnection.Open(); 

      OdbcCommand MySqlDB = new OdbcCommand(queryString, blogConnection); 
      OdbcDataReader reader = MySqlDB.ExecuteReader(); 

      while (reader.NextResult()) 
      { 
       recentPost[0] = reader.GetString(0); 
       recentPost[1] = reader.GetString(1); 
      } 
      recentPost[2] = reader.HasRows.ToString(); 
      blogConnection.Close(); 

      return recentPost; 
     } 
    } 

queryString上述RecentPost是我創建簡化查詢字符串,因爲查詢是有點長的圖。 我已經知道視圖的作品。我通過在GoDaddy Hosting Center中打開phpMyAdmin來測試它,並執行上面的查詢,並且得到了正確的結果,所以我不認爲查詢/視圖是錯誤的。

代碼隱藏的着陸頁:

protected void Page_Load(object sender, EventArgs e) 
     { 
      DAL dataAccess = new DAL(); 

      String[] recentPost = dataAccess.GetRecentPost(); 

      Title.Text = recentPost[0]; 
      Post.Text = recentPost[1]; 
      Extra.Text = recentPost[2]; 
     } 

所以,當我的頁面加載TitlePost文本是空的,Extra.TextFalse(從DAL是價值從reader.HasRows)。 所以我的猜測是,它的連接很好,運行查詢,但也許在錯誤的數據庫?我不知道。

我也嘗試調試,但然後我的代碼拋出一個關於嘗試連接到數據庫的錯誤。

所以我的問題是:你看到連接字符串有什麼問題嗎?

如果沒有看到別的東西,會導致建立連接,運行查詢,沒有引發異常但沒有返回結果?

任何一個有經驗的人試圖從他們自己的WordPress博客中獲取數據?

感謝您的幫助 - 這一直使我瘋狂。

回答

0

我不知道爲什麼我原來的代碼不工作,但我解決了我的問題。對於任何人在這裏有這個問題是我如何改變了我的代碼(在GetRecentPost方法),解決了我的問題:

DataSet ds = new DataSet(); 

//ODBC 
blogConnection.Open(); 

OdbcDataAdapter MySqlDB = new OdbcDataAdapter(queryString, blogConnection); 
MySqlDB.Fill(ds); 
return ds.Tables[0]; 

所以不是字符串數組我用了DataSet。我沒有使用OdbcDataReader,而是使用OdbcDataAdapter,並用方法從OdbcDataAdapter填入DataSet然後我將第一個表從DataSet返回到我的Page_Load方法。

這是我的新Page_Load()

DataTable table = dataAccess.GetRecentPost(); 

if (table.Rows.Count > 0) 
{ 
    Title.Text = table.Rows[0]["title"].ToString(); 
    Post.Text = table.Rows[0]["content"].ToString(); 
} 
else 
    Extra.Text = table.Rows.Count.ToString(); \\if nothing was returned ouput the 0 just to be sure 

希望這有助於任何人有這個問題

和感謝的人誰花時間看