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

首先,尝试在单个文本框中显示表中的记录是个坏主意。如果你还想做,

使用 while 循环而不是 IF 条件

 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 回答