zoukankan      html  css  js  c++  java
  • C#与数据库访问技术总结(十八)

    ADO.NET 代码综合示例

        前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源。

      以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库的一般步骤,而且说明了使用不同种类的ADO.NET组件集合访问数据库的一般步骤。

      可以通过代码进一步了解这两种数据提供者访问方式的异同之处。

    使用OLE DB.NET  Provider

    OLE DB的数据提供者可以访问Access和SQL等数据库,代码如下:
    //设置连接字符串
     string dbname=@" user.mdb";
     string db=Server.MapPath(dbPath);
     string connectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +db;
     //设置SQL语句
     string strSQL=" select  UserId, UserName from User";
    //根据连接字符串,创建连接对象
    OleDbConnection conn=new OleDbConnection(connectionString);
    //根据连接对象和SQL语句,创建DataAdapter对象
    OleDbDataAdapter  da=new OleDbDataAdapter(strSQL, conn);
    //创建OleDbCommandBuilder, 用来对DataAdapter更好地操作
    OleDbCommandBuilder  cb=new OleDbCommandBuilder(da);

       上述代码演示了从根据连接字符串建立连接对象,到创建DataAdpate对象填充DataSet,再到使用DataSet对象提交数据更新以及与DataGrid绑定的一般过程。

          上述代码也演示了使用Connection、DataAdapter和DataSet访问数据库的一般流程。

      ADO.NET采用离线的方式访问数据库,所以使用DataSet从数据库获得数据后的操作数据的过程中,不必保持与数据库的连接,直到向数据库提交更新数据时,才需连上数据库。这种做法适合于海量数据更新的情况。

         而在上述代码里,因为数据操作过程比较简单,所以直到数据更新提交结束才断开连接,也就是说,并没有采用“离线”的数据库连接访问方式。

      不采用“离线”方式的理由是:在数据库访问操作中,频繁连接和断开数据源也需要耗费一定的系统资源,如果这个代价要比保持短时间的数据连接所需的代价大,那么宁可选择“一直在线”的连接方式。

    使用SQL Server .NET  Provider

      

      以下的代码演示了如何使用SQLServer的.NETProvider来连接和访问数据。
    //连接字符串
    string connectionString="server=local;database=Northwind;user=sa;pwd=;";
    //建立连接
    Sqlconnection =new SqlConnection(connectionString);
    //SQL语句
    string strSql= "select UserID, UserName from User";
    //根据连接对象和SQL语句创建SqlCommand对象
    SqlCommand cmd=new SqlCommand(strSql, conn);
    conn.Open();
    //使用Command对象创建SqlDataReader对象
    SqlDataReader  reader=cmd.ExecuteReader();
    //使用DataReader对象填充DataGrid 控件
    DataGrid_User.DataSource=reader;
    DataGrid_User.DataBind();
    //关闭连接
    conn.Close();
       上述代码也演示了使用Connection、Command和DataReader对象访问数据库的一般方式。

    数据库访问综述

        前面讲述了用两种不同的数据提供者(Provider)访问连接数据库的方式,如果数据源是SQL Server,则使用SQL Server的Provider;如果数据源是ODBC或是其他类型的数据库,则可以选用OLE DB的Provider。

        前面还讲述了使用Connection+Command+DataReader对象和使用Connection+ DataAdapter+DataSet对象的数据库访问方式。

        根据DataReader的特性,以Connection+Command+DataReader方式访问数据库的使用场景有:

    • 访问数据只用于显示,而不修改。
    • 仅对一个数据源进行操作,或是对单表进行操作。
    • 对于数据只希望向后顺序访问,而不进行重复遍历。
    • 访问数据量小,不需要在内存中大量存储数据。
    • 需要访问的结果集太大,不能一次性地全部放入内存,此时也能使用DataReader来逐次访问。

        而DataSet支持离线的访问方式,可以有以下的应用:

    • 同一业务逻辑需要访问多个数据源,比如同时要向SQL Server和Oracle数据库中请求数据。
    • 由于DataSet可以包含多个DataTable,如果需要访问的数据对象来自多个表,可用DataSet的Table来分别存储管理。
    • 如果访问操作的数据量比较大,利用DataSet的离线访问机制可以减轻对数据库负载的压力。

    DataGrid控件与数据库访问技术

        在实际的应用项目中,通常需要把用ADO.NET组件获得的数据信息显示在界面上,供用户浏览或修改。

      可以通过使用.NET的DataGrid控件实现这种功能。

    DataGrid控件与数据绑定

        DataGrid控件的主要目的是实现“数据绑定”(Data Binding),即把DataGrid控件上显示的数据同后台数据库的数据绑定在一起,同步地一起变化。

    另外,DataGrid控件以表格的形式显示了查询到的数据结果集,默认的访问方式是只读而不能修改,通过设置,可以实现记录的修改和删除功能。

    DataGrid代码示例

        通过以下的步骤,能将数据库里的数据动态绑定到DataGrid对象里并显示。

        (1)在D盘下建立一个Access类型的数据库,命名为Student.mdb。在其中新建一张Studentlnfo的表,其中的字段如表所示。 

    字    段

    中文描述

    数据类型

    备    注

    SID

    学号

    文本

    主键

    SName

    姓名

    文本

      一 

    Sex

    性别

    文本

      一 

    注意:本书表中“一”表示无须设置相关信息。

        完成后往其中插入一些记录,如(001,Tom,Male)。

        (2)打开Visual Studio环境后,选择“文件”|“新建”|“新建网站”命令,在弹出的新建网站”对话框中选择“ASP.NET项目”,输入网站名testDataGrid和路径CAroot~DataGrid,登录模块所有代码和配置文件均放在此项目下。

        (3)在集成开发环境中的“解决方案资源管理器”里,选中项目,右击,在弹出的快捷菜单中选择“添加新项”命令,新建一个Web配置文件,命名为Web.config。该配置文件主要用来管理登录模块的一些全局性数据。

        其中,在配置文件里设置数据库的连接属性,使用OleDB的Data Provider,连接到Access数据源上,代码如下。

      

    <configuration>
      <appSettings>
    <add key="connStr" value="Porvider=Microsoft.Jet.OleDB.4.0; Data Source=D:login.mdb "></add>
      </appSettings>
    <connectionStrings />

       (4)在集成开发环境中的“解决方案资源管理器”里,选中项目,右击,在弹出的快捷菜单中选择“添加新项”命令,新建一个Web窗体,命名为showDataGrid.aspx。

        (5)打开“工具箱”的“Web窗体”,从中拖曳一个DataGrid控件到页面上,从DataGrid的属性栏中,可以看到该DataGrid对象叫DataGrid1。

        选中DataGridView控件,右击,在弹出的快捷菜单中选择"属性"命令,在属性栏的Columns中单击“…”按钮,在弹出的“编辑列”对话框中,通过“添加”命令,依次向DataGridView控件里添加“学号”、“姓名”和“性别”3列,并把每列的DataPropertyName设置成该列对应的数据库字段,用于数据绑定。具体设置如表所示。

    数据列名

    DataPropertyName

    学号

    SID

    姓名

    SName

    性别

    Sex

    (6)双击窗体的空白处,进入相应的逻辑代码文件showDataGrid.aspx.cs。

      在该文件的顶端,添加数据库访问引用的命名空间语句:    

      using System.Data.SqlClient;

      并在class的开头添加连接数据库的字符串定义:     

    Private static string strConnect =System.Configuration.ConfigurationManager.AppSettings["connstr"];

      由于使用的是DataProvider,所以ADO.NET组件的对象都以OleDb开头。

        上述代码的主要业务逻辑是:

        (1)根据连接字符串,创建数据库连接对象,并根据连接对象创建OLeDbCommand对象。

        (2)根据SQL语句,查询所有学生的信息,以SID的/顷序排列。

        (3)使用OleDbDataApapter对象,将查询结果填充到DataSet中的。均Dataset数据表里。

        (4)将DataGrid的数据源设置成。均Dataset数据表,实现数据绑定。

        这样,当打开此页面时,DataGrid就能与Access数据库绑定,显示数据库里的学生信息。

  • 相关阅读:
    Ubuntu中pip的疑难杂症
    Python 分类方法记录
    Python 绘制热图
    脚本学习
    Ubuntu 基础使用教程
    机器学习各种相似性度量及Python实现
    Ubuntu 16.04安装R及Rstudio
    机器学习和数据挖掘领域大牛
    vux+vue-cli3.0坑
    函数的抖动以及节流
  • 原文地址:https://www.cnblogs.com/zi-xing/p/4058583.html
Copyright © 2011-2022 走看看