zoukankan      html  css  js  c++  java
  • ADO.NET笔记——使用Connection连接数据库,使用Command对象的ExecuteReader()方法创建DataReader对象返回多行数据

    使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据。

    相关步骤:

    1. 需要引入两个命名空间
      using System.Data;
      using System.Data.SqlClient;
    2. 使用DataReader访问数据库的步骤
      • 创建SqlConnection对象,指定连接字符串
      • 创建SqlCommand对象,指定与之相关的连接对象,以及数据库操作命令文本(CommandText)
      • 打开连接
      • 调用SqlCommand对象的ExecuteReader()方法,返回SqlDataReader对象
      • 调用SqlDataReader对象的Read()函数,从数据库读取一行数据到程序中
      • 通过SqlDataReader对象的“[]”操作,访问该行数据中的每一个字段
      • 循环调用Read(),一次访问每一行数据
      • 当Read()返回false的时候,表明所有行均已读完
      • 调用SqlDataReader对象的Close()函数关闭之
      • 调用SqlConnection对象的Close()函数关闭数据库连接
    3. DataReader的工作模式
      • DataReader对象是以“向前只读(ForwardOnly)”游标进行工作
      • 在调用Read()函数之前,所有的数据均位于数据库服务器上;每调用一次Read(),就从服务器上下载一条数据下来
      • 在DataReader处理完数据之前,不能断开与数据库的连接。一旦断开,DataReader就无法再从数据库上下载数据
      • 这种模式的优点是:程序中所需要的内存较少(因为每次只保存一条数据),只读游标访问速度很快
      • 这种模式的缺点是:需要一直与数据库保持连接,会消耗较多数据库的资源

    代码示例:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Data;
     7 using System.Data.SqlClient;
     8 
     9 namespace ConsoleApplication1
    10 {
    11     class Program
    12     {
    13         static void Main(string[] args)
    14         {
    15             //1、创建连接对象
    16             string strConn = @"server=Joe-PC;database=AdventureWorks_WroxSSRS2012;uid=sa;pwd=root";
    17             SqlConnection conn = new SqlConnection(strConn);
    18 
    19             //2、创建命令对象
    20             string strCmd = "SELECT ProductCategoryID,Name FROM Production.ProductCategory";
    21             SqlCommand cmd = new SqlCommand(strCmd,conn);
    22 
    23             //3、打开数据库连接
    24             conn.Open();
    25 
    26             //4、执行命令
    27             SqlDataReader dr = cmd.ExecuteReader();
    28 
    29             //5、读取每行数据
    30             while(dr.Read())
    31             {
    32                 // 通过 [] 运算符取得指定字段的值( object 类型,可转换为其它所需类型)
    33                 Console.WriteLine("{0}:{1}", dr["ProductCategoryID"], dr["Name"]);
    34             }
    35 
    36             //6、关闭 DataReader 对象
    37             //dr.Cloase();
    38 
    39             //7、关闭数据库连接
    40             //即使没有调用dr.Close(),conn.Close()也会强制dr关闭
    41             conn.Close();
    42         }
    43     }
    44 }

    PS:数据库连接管理

      大多数的数据库只支持有限的连接,为避免占用资源,在完成数据库的操作之后,应当及时关闭连接。因此,必须确定成对调用连接对象的 Open 和 Close 方法。为了有效管理数据库连接的打开和关闭,还可以使用以下两种方法。

    • 使用 try...catch...finally 语句块

        在 try...catch...finally 语句块中,使用 try 语句打开数据库连接,使用 catch 语句捕获异常,使用 finally 语句确保关闭数据库的连接。

     1             string strConn = @"server=Joe-PC;database=AdventureWorks_WroxSSRS2012;uid=sa;pwd=root";
     2             SqlConnection conn = new SqlConnection(strConn);
     3 
     4             try
     5             {
     6                 conn.Open();
     7                 //执行数据库操作命令
     8             }
     9             catch(Exception ex)
    10             {
    11                 //如果打开连接出现异常,在此进行异常处理
    12             }
    13             finally
    14             {
    15                 conn.Close();
    16             }
    • 使用 using 语句块

        为更有效管理数据库的连接,C#提供了 using 语句块,用来自动管理数据库连接。当数据访问结束之后,using 语句首先自动关闭数据源连接,然后释放连接对象,因此大大简化编程。

    1             string strConn = @"server=Joe-PC;database=AdventureWorks_WroxSSRS2012;uid=sa;pwd=root";
    2 
    3             using(SqlConnection conn = new SqlConnection(strConn))
    4             {
    5                 conn.Open();
    6                 //执行数据库操作命令
    7             }
  • 相关阅读:
    3 Redis 的常用五大数据类型
    Oracle12C 基本操作和使用
    CentOS7安装VNC服务
    CentOS7.6 安装Oracle12C(下)
    CentOS7.6 安装Oracle12C(上)
    博主创建了一个AGV吧的Discuz,欢迎各位加入进来
    六、openTCS4.17汉化版源码包含通信DEMO,gitee地址见内容
    毕马威图形数独
    五、OpenTCS4.12的模拟运行
    四、通过Socket实现跟AGV小车通信(仅做Demo演示,跟实际工厂运行无关)
  • 原文地址:https://www.cnblogs.com/chenguangqiao/p/4337813.html
Copyright © 2011-2022 走看看