2

我正在使用下面的代码从我的数据库中获取公司列表并将它们加载到列表视图中。它工作得很好。

conn.Open();
string pricesqry = "SELECT company, url FROM companies";
SqlCommand pricescmd = new SqlCommand(pricesqry, conn);
SqlDataReader pricesreader = pricescmd.ExecuteReader();

while (pricesreader.Read())
{
    ListViewItem company = new ListViewItem(pricesreader["company"].ToString());
    company.SubItems.Add(pricesreader["url"].ToString());
    company.SubItems.Add("Blank for now..");

    pricesList.Items.Add(company);
}
conn.Close();

但是,如果我想按公司名称的字母顺序排列我的列表,请将我的选择查询更改为:

string pricesqry = "SELECT company, url FROM companies ORDER BY company";

没有数据加载到列表视图中。按部分删除顺序,数据再次出现。我究竟做错了什么?

4

2 回答 2

0

如果您可能NULL在数据库中有 's,最好从 reader 获取值,如下所示:

假设公司和网址是一个字符串。

ListViewItem company = new ListViewItem(Convert.IsDBNull(pricesreader.GetOrdinal("company")) ? null : pricesreader.GetString(pricesreader.GetOrdinal("company")));

company.SubItems.Add(Convert.IsDBNull(pricesreader.GetOrdinal("url")) ? null : pricesreader.GetString(pricesreader.GetOrdinal("url")));

希望这可以帮助。

于 2012-08-23T15:46:12.423 回答
0

归功于 Minitech。

我的“公司”列类型设置为文本。更改为 varchar ,它现在按我的预期工作。

于 2012-08-23T15:47:36.523 回答