C#将每个表行添加到数据库的文本框中

时间:2013-06-02 12:41:21

标签: c# sql-server database textbox

我已经将数据库表绑定到文本框了,我遇到了一个问题。我这里的代码从表中获取了我需要的所有列,但只显示了一行的数据。是否有一种简单的方法可以使表格中的每一行都显示在文本框中?还是其他一些文字列表?

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();

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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();