SQLDataReader字段顺序是否重要?

时间:2013-05-31 11:30:24

标签: c# sql sqldatareader

假设我有一段代码从我的数据库中检索行并将它们写入变量(html

using (SqlConnection conn = new SqlConnection())
{
    conn.ConnectionString = ConfigurationManager.ConnectionStrings["connection_string"].ConnectionString;
    SqlCommand cmd = new SqlCommand("SELECT * FROM Table WHERE order_id = @id", conn);
    cmd.Parameters.Add("id", SqlDbType.Int).Value = Request.QueryString["id"];
    conn.Open();
    SqlDataReader sdr = cmd.ExecuteReader();
    while (sdr.Read())
    {                   
        html += sdr.IsDBNull(2) ? "" : sdr.GetString(2);
        html += sdr.IsDBNull(1) ? 0 : sdr.GetInt32(1);
        html += sdr.IsDBNull(4) ? 0 : sdr.GetInt32(4);
        html += sdr.IsDBNull(3) ? "" : sdr.GetString(3);
        html += sdr.IsDBNull(0) ? 0 : sdr.GetInt32(0);
    }
}   

让我们假设我需要它们按照确切的顺序输出 - 2,1,4,3,0。我应该这样做吗?

while (sdr.Read())
{        
    html += string.Format("{2}{1}{4}{3}{0}",
        sdr.IsDBNull(0) ? 0 : sdr.GetInt32(0),
        sdr.IsDBNull(1) ? 0 : sdr.GetInt32(1),
        sdr.IsDBNull(2) ? "" : sdr.GetString(2),
        sdr.IsDBNull(3) ? "" : sdr.GetString(3),
        sdr.IsDBNull(4) ? 0 : sdr.GetInt32(4)
    );
}

第二种方法是否会更有效率,因为SQLDataReader以正确的顺序读取它们?

2 个答案:

答案 0 :(得分:1)

顺序无关紧要。您可以按照自己喜欢的顺序访问它们。您已经有两个测试用例,您可以自己测试一下。检查自己比在互联网上听随机陌生人更好。

答案 1 :(得分:0)

  

我应该这样做吗?

当然可以。 SqlDataReader不会强制您按顺序读取行。您可以按任意顺序使用它们。

  

第二种方法是否因SQLDataReader更有效   以正确的顺序读取它们?

我认为这不重要。 SqlDataReader不会读取前四行仅读取第5行。所以他们之间没有性能问题。 使用哪一个更适合您。

作为Tim suggest,您可以在select语句中使用列名,以便在您拥有大量列时可以更具可读性。

  

如果是,则指定列名称是否有性能优势   还在检索所有列?

SELECT * FROMSELECT col1,col2,col3, col4, col5 FROM之间没有任何性能优势。它们非常相同。 (我假设你的表中只有5列)