Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLDataReader字段顺序是否重要?_C#_Sql_Sqldatareader - Fatal编程技术网

C# SQLDataReader字段顺序是否重要?

C# SQLDataReader字段顺序是否重要?,c#,sql,sqldatareader,C#,Sql,Sqldatareader,假设我有一个代码块,它从数据库中检索行并将它们写入变量(html) 让我们假设我需要它们以精确的顺序输出-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

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

让我们假设我需要它们以精确的顺序输出-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以正确的顺序读取它们而更有效

不,顺序无关紧要。您可以按任意顺序访问它们。您已经有了这两个测试用例,您可以自己测试它。你最好自己检查一下,而不是在网上随便听陌生人说话

我应该这样做吗

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

第二种方法会因为SQLDataReader而更有效吗 按正确的顺序读

我认为这无关紧要
SqlDataReader
不读取只读第5行的前四行。因此,它们之间没有性能问题使用它们,哪一个更适合您阅读。

作为Tim,您可以在select语句中使用列名,以便在有很多列的情况下更易于阅读

如果需要,指定列名是否有性能优势 仍在检索所有列吗

否。


SELECT*FROM
SELECT col1、col2、col3、col4、col5 FROM
之间没有性能优势,两者相当。(我假设您的表中只有5列)

简短回答:不,没关系。做可读性最好、不易出错的事情。但是你不应该写
SELECT*FROM
而是
SELECT col1,col2,col3,。。。从
。我个人不会担心性能,除非它太慢。我会使用列名使其更具可读性。另外,还可以考虑使用StringBuilder,而不是包含字符串,因为这样可以快得多。我通常使用列名,但这只是一个示例,所以我不必费心将它们编成=)出于兴趣,如果仍在检索所有列,指定列名是否有性能优势?
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)
    );
}