0

編集:問題を解決しましたが、何か追加してください。おかげMySqlの結果を返す際の問題

注:私はそれはワードプレスで作成されたDBを作成していないが、私は(明確にするため)、「ワードプレス」と呼ばれるMySQLデータベースを持っている私のサイト

とGoDaddyの上にホストされています。私は自分のブログから最新の投稿を取得して、それを私のURLのリンク先ページに表示したいと考えています。 私の考えはこれです: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; 
     } 
    } 

RecentPost上記queryStringでは、クエリが少し長かったので、私は、クエリ文字列簡素化するために作成した図です。 私はすでにビューが動作していることを知っています。私は、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.Textは(DALからどれがreader.HasRowsからの値である)Falseでロードします。 私の推測では、その接続は正常であり、クエリを実行していますが、おそらく間違ったデータベースにありますか?知りません。

また、デバッグしようとしましたが、データベースに接続しようとするとエラーが発生しました。

私の質問はです:接続文字列に問題はありますか?

接続が確立されず、クエリが実行され、例外はスローされませんが、結果は返されません。

自分自身のワードプレスのブログからデータを取得しようとした経験がある人はいますか?

助けてくれてありがとう - これは私を夢中にさせてくれました。

答えて

0

なぜ元のコードが機能していないのか分かりませんが、私は問題を解決しました。

DataSet ds = new DataSet(); 

//ODBC 
blogConnection.Open(); 

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

ので、代わりの私はDataSet使用される文字列の配列:他にここにこの問題を持つ人のために、私は(GetRecentPost方法で)私のコードを変更し、私の問題を解決する方法です。 OdbcDataReaderを使用する代わりに、OdbcDataAdapterを使用し、メソッドをからDataSetに移植しました。その後、最初のテーブルをDataSetから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 

希望:

は、ここに私の新しいPage_Load()です

関連する問題