using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;namespace OrdinelIndexer{ class Program { static void Main(string[] args) { string connString = @"server=.;integrated security =true;database =northwind"; string sql = @"select companyname,contactname from customers where contactname like 'M%'"; SqlConnection conn = new SqlConnection(connString); try { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader rdr = cmd.ExecuteReader(); Console.WriteLine("\t{0} {1}", "Company Name".PadRight(25), "Contact Name".PadRight(20)); Console.WriteLine("\t{0} {1}", "============".PadRight(25), "============".PadRight(20)); while (rdr.Read()) { // Console.WriteLine(" {0} | {1}", rdr[0].ToString().PadLeft(25), rdr[1].ToString().PadLeft(20)); Console.WriteLine(" {0} | {1}", rdr["companyname"].ToString().PadLeft(25), rdr[1].ToString().PadLeft(20)); } rdr.Close(); } catch (Exception e) { Console.WriteLine("Error Occurred: " + e); } finally { conn.Close(); } Console.ReadKey(); } }}
多数情况下,我们并不使用列号,而是根据列名来进行检索,这是因为列名更容易记忆,代码也更容易维护。
与序数索引器的方法不同,列名索引把列名传递给数据读取器。这有很多优点。例如,表中可能添加或删除一列或多列,扰乱了列的顺序,如果使用序数索引器就会导致异常,而使用列名索引器就可以避免这一问题,但使用序数索引器速度更快,因为它直接获取列,而不需要根据名称进行查找。