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 

希望这有助于任何人有这个问题

和感谢的人谁花时间看