zoukankan      html  css  js  c++  java
  • 复习ADO.NET的ExecuteReader()方法

    ExecuteReader() 方法

        解释1:将SQL语句发送到指定连接 生成一个SqlDataReader对象
               解释2:当ExecuteReader()执行后返回一个SqlDataReader对象
               两种解释实际上都在说明些方法就是给SqlDataReader对象一个可以访问查询到的结果的渠道。

     程序执行分析
    1、首先需要new一个SqlDataReader对象。接收ExecuteReader()执行后返回的SqlDataReader对象。
    2、SqlDataReader的HasRows属性可以判断SqlDataReader中是否有(一行或多行)数据,返回bool值,有数据时为true,程序向下执行,开始进入读取数据环节。
    3、SqlDataReader的Read方法可以使SqlDataReader前进到下一条记录,同样返回bool值,当下一条无记录返回false,则表示记录读取完毕;当下一条有数据时为true,将读取到的数据(当前的一条记录)暂存在SqlDataReader中。
    4、SqlDataReader的一系列get方法可以获取SqlDataReader中不同类型的值,保存到指定的变量中。
    注:get方法参数为列数,即第几列。

    还有一点很重要,DataReader必须保证SqlConnection处于连接状态。

    练习:

    从SQL Server数据表Student中读取所有记录打印到屏幕:

     1 class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             string constr = @"server=.\SQLEXPRESS;database=MyDataBase;uid=sa;pwd=sa";
     6             //string constr = @"server=.\SQLEXPRESS;database=MyDataBase;Integrated Security=True";
     7 
     8             
     9 
    10             using (SqlConnection sqlconn = new SqlConnection(constr))
    11             {
    12                 string cmdstr = @"select * from Student";
    13                 using (SqlCommand cmd = new SqlCommand(cmdstr, sqlconn))
    14                 {
    15                     if (sqlconn.State == ConnectionState.Closed)
    16                     {
    17                         sqlconn.Open();
    18                     }
    19                     SqlDataReader reader= cmd.ExecuteReader();
    20 
    21                     if (reader.HasRows)//HasRows判断reader中是否有数据
    22                     {
    23                         while(reader.Read())  //Read()方法读取下一条记录,如果没有下一条,返回false,则表示读取完成
    24                         {
    25                             int id = reader.GetInt32(0);
    26                             string name = reader.GetString(1);
    27                            string  gender = reader.GetBoolean(3) == true ? "" : ""; //运用了三元表达式
    28                             int age = reader.GetInt32(2);
    29 
    30                             Console.WriteLine("\t{0}\t{1}\t{2}\t{3}\r\n",id,name,gender,age);
    31                         }
    32 
    33                         Console.ReadKey();
    34                     }
    35                 
    36                 }
    37 
    38             }
    39         }
    40     }
     1                    //reader的第二种输出(遍历)方式,使用索引,效率会稍微低点,因为通过索引得到的为对象(object)
     2                         //while (reader.Read())  
     3                         //{
     4                            
     5                         //    Console.WriteLine("\t{0}\t{1}\t{2}\t{3}\r\n", reader[0], reader[1], reader[2], reader[3]);
     6                         //}
     7                         //第三种,也是索引 ,方括号内指定数据库中的列名
     8                         //while (reader.Read())
     9                         //{
    10 
    11                         //    Console.WriteLine("\t{0}\t{1}\t{2}\t{3}\r\n", reader["sId"], reader["sAge"], reader["sName"], ((bool)reader["sGender"] == true ? "男" : "女"));
    12                         //}

     //第二种输出方式,使用索引,效率会稍微低点,因为通过索引得到的为对象(object)
                            //while (reader.Read())  
                            //{
                               
                            //    Console.WriteLine("\t{0}\t{1}\t{2}\t{3}\r\n", reader[0], reader[1], reader[2], reader[3]);
                            //}
                            //第三种,也是索引 ,方括号内指定数据库中的列名
                            //while (reader.Read())
                            //{

                            //    Console.WriteLine("\t{0}\t{1}\t{2}\t{3}\r\n", reader["sId"], reader["sAge"], reader["sName"], ((bool)reader["sGender"] == true ? "男" : "女"));
                            //}

  • 相关阅读:
    SVO深度解析(三)之深度滤波(建图部分)
    SVO深度解析(二)之跟踪部分
    SVO深度解析(一)之简介和评价
    图像三维重建方法综述
    SLAM优化位姿时,误差函数的雅可比矩阵的推导。
    Canny边缘检测原理与C++实现(2)实现部分
    Canny边缘检测原理与C++实现(1)原理部分
    指针的大小是谁决定的
    Ubuntu 16.04配置CUDA 9.0+cudnn 7.0以及解决Nvidia显卡导致黑屏问题
    安装FAB-Map 2.0,Ubtuntu 16.04
  • 原文地址:https://www.cnblogs.com/net515/p/2549267.html
Copyright © 2011-2022 走看看