0

データベース テーブルをテキスト ボックスにバインドする作業を少し行ったところ、問題が発生しました。ここにあるコードは、テーブルから必要なすべての列を取得しますが、1 行分のデータしか表示されません。テーブルのすべての行をテキスト ボックスに表示する簡単な方法はありますか? それとも、他の種類のテキスト リストですか?

SqlConnection cn = new SqlConnection("SERVER=myserver;DATABASE=mydb;Trusted_Connection=True");
SqlCommand cmd = new SqlCommand();
SqlDataReader dr = null;

cmd.Connection = cn;
cn.Open();
cmd.CommandText = "SELECT DisasterID,DisasterType,Location,CurrentStatus,IntensityLevel,Latitude,Longitude FROM Disasters";
dr = cmd.ExecuteReader();
if (dr.Read()) {
    txtFeeds.Text = dr["DisasterID"].ToString() + " " + dr["DisasterType"].ToString() + " " + dr["Location"].ToString() + " " + dr["CurrentStatus"].ToString() + " " + dr["IntensityLevel"].ToString() + " " + dr["Latitude"].ToString() + " " + dr["Longitude"].ToString();
}
cn.Close();
4

2 に答える 2

3

whileループして各行をテキストボックスに追加する必要がありますtxtFeeds.Text +=

while(dr.Read()) {
    txtFeeds.Text += dr["DisasterID"].ToString() + " " 
   + dr["DisasterType"].ToString() + " " 
   + dr["Location"].ToString() + " " 
   + dr["CurrentStatus"].ToString() + " " 
   + dr["IntensityLevel"].ToString() + " " 
   + dr["Latitude"].ToString() + " " + dr["Longitude"].ToString();
}

より多くのパフォーマンスが必要な場合はStringBuilder、テキストを追加し、最後にメソッドを使用してテキストボックスのテキストを設定するために使用できますStringBuilder.ToString

編集。

StringBuilder sb = new StringBuilder();
while (dr.Read())
{
    sb.AppendLine(dr["DisasterID"].ToString() + " " 
    + dr["DisasterType"].ToString() + " " 
    + dr["Location"].ToString() + " " 
    + dr["CurrentStatus"].ToString() + " " 
    + dr["IntensityLevel"].ToString() + " " 
    + dr["Latitude"].ToString() + " " + dr["Longitude"].ToString());
}

txtFeeds.Text = sb.ToString();
于 2013-06-02T12:44:27.693 に答える
1

まず第一に、テーブルのレコードを単一のテキストボックスに表示しようとするのは悪い考えです。それでもやりたいという方は、

IF 条件の代わりに while ループを使用する

 while(dr.Read()) 
{

}

文字列ビルダーを使用してすべての列の値を追加し、while ループが存在した後、文字列ビルダーの値を使用してフィールドに設定します。

StringBuilder values = new StringBuilder();

while(dr.Read()) {
            values.Append( dr["DisasterID"].ToString() + " " + dr["DisasterType"].ToString() + " " + dr["Location"].ToString() + " " + dr["CurrentStatus"].ToString() + " " + dr["IntensityLevel"].ToString() + " " + dr["Latitude"].ToString() + " " + dr["Longitude"].ToString());
        }

 txtFeeds.Text = values.ToString();
于 2013-06-02T12:46:37.483 に答える