首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLDataReader字段顺序重要吗?

SQLDataReader字段顺序重要吗?
EN

Stack Overflow用户
提问于 2013-05-31 19:30:24
回答 2查看 219关注 0票数 2

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

代码语言:javascript
复制
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。我应该这样做吗?

代码语言:javascript
复制
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会以正确的顺序读取它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-31 19:33:48

不,顺序并不重要。您可以按您喜欢的任何顺序访问它们。你已经有了两个测试用例,你可以自己测试它。你自己去查查总比在网上听陌生人说话要好。

票数 1
EN

Stack Overflow用户

发布于 2013-05-31 19:34:48

我应该这样做吗?

你当然可以。SqlDataReader不会强制您按顺序读取行。你可以按你想要的顺序使用它们。

第二种方法会因为SQLDataReader以正确的顺序读取它们而更有效吗?

我觉得这无关紧要。SqlDataReader不读取前四行,只读第五行。因此,它们之间不存在性能问题。使用它们中对您更易读的那个。

作为Tim suggest,您可以在select语句中使用列名,这样当您有很多列时,它的可读性就会更好。

如果您仍然检索所有列,那么指定列名是否对性能有好处?

编号:

SELECT * FROMSELECT col1,col2,col3, col4, col5 FROM之间没有性能优势,它们是完全相同的。(我假设您的表中只有5列)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16856283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档