SqlDataReader类
简介:提供了顺序的、只读的方式读取Command对象获得的数据结果集。因为是以顺序的方式连续地读取数据,所以DataReader会以独占的方式打开数据库连接 因为只是读操作,每次只在内存缓冲区里存储结果集的一条数据,所以效率比较高,如果查询大量数据,而且不需要同时修改,用这个比较好
常用属性
① FieldCount:表示记录有多少字段
② HasRows:表示DataReader是否包含数据
③ IsClosed:表示的DataReader是否关闭
常用方法
① IsNull:判断字段内是否为Null值 ② Reader():其返回类型为bool,将数据阅读器移到结果集的下一行并读取该行。这个方法返回的布尔值表示结果集中是否有多行 上面所涉及到的例子:
while (reader.Read())//当数据表里面有数据的时候③ GetValue(): 其返回类型为object, 返回指定列的值
④ GetValues(): 其返回类型为int,将当前行中所有列的值复制到指定对象数组。这个方法返回的int是数组元素的个数
⑤ NextResult():其返回类型为bool,将数据阅读器移到结果集的下一行。这个方法返回的布尔值表示结果集中是否有多行
⑥ Close():关闭 SqlDataReader 对象
⑦ GetOrdinal:取得指定字段名称在记录中的顺序
⑧ GetInt32(),GetChar(), GateDataTime(),Get×××():返回指定列的值,并且返回的类型为相应的数据类型。例如GetInt32()返回整型的数值。 注意,如果你将返回值赋予一个类型不匹配的变量时,将会抛出一个InvalidCastException异常 上面所涉及到的例子:
user.ID = reader.GetInt32(0);//get**(a)——**表示返回指定值的类型,a表示返回值的列数Parameters的Add方法传参问题
第一种——直接写入法
int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values("+Id+",'"+Name+"')";Id是数值在sql中用"+id+“实现,Name是字符串所以传递的时候需要在”+Name+"两边再各加一个单引号实现
第二种——给命令对象添加参数法:
int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values(@Id,@Name)";直接在sql语句中写添加的参数名,不管参数的类型都是这样,之后在给参数赋值
cmd.Parameters.Add(new SqlParameter("@Id", Id)); cmd.Parameters.Add(new SqlParameter("@Name", NAME));SqlParameter对象:就是将要用于操作库的数据以参数的形式加入到sql语句当中,防止因为拼接字符串而引起的安全问题并且提高可读性。
所以使用第二种方法,执行SQL语句操作前,要做两步工作:
① 创建一个SqlParameter对象,在定义时或定义后将数据绑定到SQL的参数上面
② 使用SQLcommand.Parameterde的Add方法(针对于单个的对象)或AddRange方法(SQLparameter数组)将SQLparameter对象添加到字符串中即可执行