如果我这样做:
using (SqlCommand cmd = new SqlCommand("SELECT * FROM TBL"))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
string s = reader.GetString(7);
}
}
}
Read()调用是将整行读入内存,还是GetString(7)调用意味着读者只读取第7列中的数据?
答案 0 :(得分:4)
它读取读操作的整行。
答案 1 :(得分:1)
读取操作读取整行。行的大小由select语句决定。所以,如果你有一千列,只想要4,你可以在你的选择中做到这一点。如果另一方面,如果第1列是Y,则需要5列,如果是N,则需要8列,那么运气不好,单个select * from table
无法完成。
无法完成的原因是对数据库的调用尽可能快地发送回数据流(结果集),两者之间没有进一步的通信,即使有,也会必须在UNSENT行上,因为当前行已经被发送和接收。要做你正在谈论的事情,就需要在每一列上进行双向沟通,除非在真正特殊的情况下,否则会破坏性能。即使按行进行,通常效率也很低。
答案 2 :(得分:0)
我认为您正在寻找datareader的ExecuteScalar方法,并希望在sql命令中指定列。