使用以下语法从SqlDataReader读取值之间的区别是什么:
Dim reader As SqlClient.SqlDataReader
reader("value").ToString()
Run Code Online (Sandbox Code Playgroud)
要么
Dim reader As SqlClient.SqlDataReader
reader.GetString(reader.GetOrdinal("value"))
Run Code Online (Sandbox Code Playgroud)
Ale*_*ack 12
我认为使用GetOrdinal()的原因是您可以缓存结果并多次重复使用它以获得性能.
例如
Dim reader As SqlClient.SqlDataReader
int valueOrdinal = reader.GetOrdinal("value");
while ( ... )
{
var value = reader.GetString(valueOrdinal);
}
Run Code Online (Sandbox Code Playgroud)
GetOrdinal首先执行区分大小写的查找.如果失败,则进行第二次不区分大小写的搜索.GetOrdinal由于基于序数的查找比命名查找更有效,因此GetOrdinal在循环内调用效率很低.通过调用GetOrdinal一次并将结果分配给整数变量来节省时间,以便在循环中使用.
来源:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getordinal.aspx
| 归档时间: |
|
| 查看次数: |
22041 次 |
| 最近记录: |