注意:在SqlDataReader的while读取循环中不要直接使用列名来取数据,这样效率会非常低,一般建议直接用索引的方式
如果非要用列名的话,处理方式应该为现在循环外把列名对应的索引用reader.GetOrdinal("列名")取得,然后在循环中使用取得索引
--GetOrdinal方法根据列名取得对应的序号
string constr = "Data Source=zxtiger;Initial Catalog=itcastcn;Integrated Security=True";
using (SqlConnection con = new SqlConnection(constr))
{
string sql = "select * from Employees";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
con.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
//HasRows属性用来判断这次查询是否查询出了数据
if (reader.HasRows)
{
//在While循环外先根据列名取得索引
int c1 = reader.GetOrdinal("lie1");
int c2 = reader.GetOrdinal("lie2");
//如果查询出了数据则开始循环获取每一条数据
while (reader.Read())
{
//一般如果没有特殊情况建议使用索引来获取列信息,不要使用列名(效率低下),
int EmpId = reader.GetInt32(0);
string EmpName = reader.GetString(1);
//数据库中的float,这里得用GetDouble()来获取
//reader.GetDouble()
//在循环外面根据列名先计算出来索引
//然后在循环里面还是使用索引。
object obj1 = reader[c1];
object obj2 = reader[c2];
}
Console.WriteLine();
}
}
}
}
Console.ReadKey();