开发者

Trouble with returning results from MySql

Edit: I solved my problem but if you have anything to add please do. Thanks

Note: I did not create the DB it was created by Wordpress hosted on GoDaddy with my site

I h开发者_高级运维ave a MySql Database called "wordpress" (for clarity). I want to be able to grab the most recent post from my blog and show it on the landing page for my url. So my thought is this: connect to the MySql DB, run a query to grab the most recent post, display the post.

I built a class to handle the connection and process the request:

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;
        }
    }

In the queryString above RecentPost is a view I created to simplify the queryString since the query was a bit long. I already know the view works. I tested it by opening phpMyAdmin from within the GoDaddy Hosting Center and executed the query above and I got the correct result, so I don't think the query/view is wrong.

The code-behind for the landing page:

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];
        }

So when my page loads the Title and Post texts are empty and Extra.Text is False (which from the DAL is the value from reader.HasRows). So my guess is that its connecting fine and running the query but maybe on the wrong database? I don't know.

I also tried to debug but then my code throws an error about trying to connect to database.

So my questions are: Do you see anything wrong with the connection string?

If not do you see anything else than would cause a connection to be esablished, a query to run, no exceptions thrown but no results returned?

Any one with experience trying to grab data from thier own wordpress blog?

Thanks for the help - this one has been driving me crazy.


I don't know why my original code wasn't working but I solved my issue. For anyone else having this issue here is how I changed my code (in the GetRecentPost method) and solved my problem:

DataSet ds = new DataSet();

//ODBC
blogConnection.Open();

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

So instead of an array of strings I used a DataSet. Instead of using the OdbcDataReader I used an OdbcDataAdapter and populated the DataSet with the .Fill() method from OdbcDataAdapter I then returned the first table from the DataSet to my Page_Load method.

Here is my new 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

Hope this helps anyone else with this issue

And thanks for anyone who took the time to look

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜