为什么“ORDER BY”会破坏我的查询?

时间:2012-08-23 15:37:14

标签: c# sql sql-server visual-studio-2010

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

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";

没有数据加载到列表视图中。按部分删除订单,然后再次显示数据。我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果你在数据库中有NULL的话,最好从读者那里得到这样的值:

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

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

希望这会有所帮助。

答案 1 :(得分:0)

归功于Minitech。

我的'公司'列类型设置为文字。改为varchar,它现在按照我的预期工作。