2017-12-14 8 views
0

私はこのコードを持っている:データベースの値をリストビューにロードできないのはなぜですか?

listView10.Items.Clear(); 
MySqlConnection con = new MySqlConnection("Server=166.62.27.186;Database=xxxx;Uid=xxxx;Pwd=xxxx;"); 

MySqlCommand cmd = new MySqlCommand("select * from appoint order by times asc", con); 
MySqlDataAdapter da = new MySqlDataAdapter(cmd); 
con.Open(); 
DataTable dt = new DataTable(); 
da.Fill(dt); 
foreach (DataRow dr in dt.Rows) 
{ 
    ListViewItem Item = new ListViewItem(dr["Customer"].ToString()); 
    Item.SubItems.Add(dr["Kind"].ToString()); 
    Item.SubItems.Add(dr["connum"].ToString() + "/" + dr["telnum"].ToString()); 
    Item.SubItems.Add(dr["times"].ToString()); 
    Item.SubItems.Add(dr["address"].ToString()); 
    Item.SubItems.Add(dr["type"].ToString()); 
    Item.SubItems.Add(dr["notes"].ToString()); 
    listView10.Items.Add(Item); 
} 
con.Close() 

は、それがテーブルに値をロードする必要がありますが、それはしません。 データベースをMysql Workbenchに接続すると、接続が機能しているようです。私のwinformアプリケーションではまだデータベースに挿入できますが、それでもまだ読み込まれません。私は私が気づいたように、実行後に気づいた:

da.Fill(dt); 

それだけでそこで停止し、foreachステートメントを実行しません。私は理解していない問題のようです。 私は必要に応じてより多くの情報を提供します。明日は急いで私たちの論文の私たちの防衛です。事前のおかげで

写真あなたがこの例のようにデータを取得するためにMySqlDataAdapterに代わるものとしてMySqlDataReader.ExecuteReader()方法でDataTable.Load()メソッドを使用することができます

enter image description here

enter image description here

enter image description here

+1

'foreach'ループは何もしないので、' dt.Rows'には行がありません(空の結果)。あなたはそれを確認しましたか? –

+0

これをデバッグしましたか? 'dtRows'の内容を見てください。 – HimBromBeere

+0

どのようにdt.rowsをデバッグできますか?ブレークポイントでは{}が明らかにヌルの権利を示していますか? – yuzirui

答えて

1

をデバッグ:

using (MySqlConnection con = new MySqlConnection("Server=166.62.27.186;Database=xxxx;Uid=xxxx;Pwd=xxxx;")) 
{ 
    con.Open(); 
    using (MySqlCommand cmd = new MySqlCommand("select * from appoint order by times asc", con)) 
    { 
     MySqlDataReader rdr = cmd.ExecuteReader(); 
     DataTable dt = new DataTable(); 
     dt.Load(rdr); 
     foreach (DataRow dr in dt.Rows) 
     { 
      ListViewItem Item = new ListViewItem(dr["Customer"].ToString()); 
      Item.SubItems.Add(dr["Kind"].ToString()); 
      Item.SubItems.Add(dr["connum"].ToString() + "/" + dr["telnum"].ToString()); 
      Item.SubItems.Add(dr["times"].ToString()); 
      Item.SubItems.Add(dr["address"].ToString()); 
      Item.SubItems.Add(dr["type"].ToString()); 
      Item.SubItems.Add(dr["notes"].ToString()); 
      listView10.Items.Add(Item); 
     } 
    } 
    con.Close(); 
} 
関連する問題