从MySql返回结果有问题

时间:2011-02-04 06:54:14

标签: mysql asp.net database-connection connection-string

编辑:我解决了我的问题但是如果你有什么要补充的话请做。感谢

注意:我没有使用我的网站创建由GoDaddy托管的Wordpress创建的数据库

我有一个名为“wordpress”的MySql数据库(为清楚起见)。我希望能够从我的博客中获取最新帖子并将其显示在我的网址的目标网页上。 所以我的想法是:连接到MySql DB,运行查询以获取最新帖子,显示帖子。

我构建了一个类来处理连接并处理请求:

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是我创建的一个视图,用于简化queryString,因为查询有点长。 我已经知道该视图有效。我通过在GoDaddy托管中心内打开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的文字来自{{} 1}})。 所以我的猜测是它连接正常并运行查询但可能在错误的数据库上?我不知道。

我也尝试调试,但后来我的代码抛出了一个关于尝试连接数据库的错误。

所以我的问题是:你看到连接字符串有什么问题吗?

如果没有看到除了会导致建立连接的其他内容,运行查询,没有抛出异常但没有返回结果?

有没有尝试从他们自己的wordpress博客中获取数据的经验?

感谢您的帮助 - 这个让我疯狂。

1 个答案:

答案 0 :(得分: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并使用DataSet中的.Fill()方法填充OdbcDataAdapter,而是从{{1}返回了第一个表格我的DataSet方法。

这是我的新Page_Load

Page_Load()

希望这可以帮助其他人解决这个问题

感谢任何花时间看的人