zoukankan      html  css  js  c++  java
  • SqlDataAdapter类

       SqlDataAdapter 是DataSet 和更新数据库的一组数据命令和一个数据库连接的填充器。提供 DataSet 和 SQL Server 之间的桥接,用于检索和保存数据。

    SqlDataAdapter 是通过对数据源映射Fill(可更改 DataSet 中的数据以匹配数据源中的数据)和 Update(可更改数据源中的数据以匹配 DataSet 中的数据)来提供这一桥接。

    1、构造函数

    (1)SqlDataAdapter ()

    (2)SqlDataAdapter (SqlCommand) :用指定的 SqlCommand 作为 SelectCommand的属性。

    (3)SqlDataAdapter (String, SqlConnection) :使用 SelectCommand 和 SqlConnection 对象初始化 SqlDataAdapter 类的新实例。

    (4)SqlDataAdapter (String, String) :用 SelectCommand 和一个连接字符串初始化 SqlDataAdapter 类的新实例。

    2、SqlDataAdapter 的部分属性

    AcceptChangesDuringUpdate:在 Update 期间是否调用 AcceptChanges
    ContinueUpdateOnError:在行更新过程中遇到错误时是否生成异常。
    DeleteCommand:获取或设置一个 Transact-SQL 语句或存储过程,以从数据集删除记录。
    InsertCommand:获取或设置一个 Transact-SQL 语句或存储过程,以在数据源中插入新记录。
    MissingMappingAction:确定传入数据没有匹配的表或列时需要执行的操作。
    MissingSchemaAction:确定现有 DataSet 架构与传入数据不匹配时需要执行的操作。
    SelectCommand:获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录。
    TableMappings:获取一个集合,它提供源表和 DataTable 之间的主映射。
    UpdateBatchSize:获取或设置每次到服务器的往返过程中处理的行数。
    UpdateCommand:获取或设置一个 Transact-SQL 语句或存储过程,用于更新数据源中的记录。

    3、常用方法


    Fill: 填充 DataSet 或 DataTable。
    FillSchema: 将 DataTable 添加到 DataSet 中,并配置架构以匹配数据源中的架构。
    GetFillParameters:获取当执行 SQL SELECT 语句时由用户设置的参数。
    GetType:获取当前实例的 Type。
    Update:为 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或 DELETE 语句。
    Dispose: 释放由 Component 占用的资源。

    4、事件


    Disposed:添加事件处理程序以侦听组件上的 Disposed 事件。
    FillError:在填充操作过程中出现错误时返回。
    RowUpdated:在对数据源执行命令后的 Update 过程中发生。试图进行更新,因此激发了该事件。
    RowUpdating:在对数据源执行命令前的 Update 过程中发生。试图进行更新,因此激发了该事件。

    5、使用SqlDataAdapter 的注意点

    (1)使用SqlDataAdapter对象的时候不需要打开Connection连接,在使用SqlDataAdapter的Fill()方法填充数据时会自动打开数据库连接,并在执行完之后自动关闭连接。如果Connection连接在调用Fill()方法之前打开,则执行填充之后不会关闭连接而是保持现有状态。

    (2)如果在一个Connection连接在调用多个Fill()方法,则在调用Fill()方法之前打开Connection连接以提高效率。

    (3)SqlDataAdapter和DataSet之间没有直接连接。SqlDataAdapter的Fill()方法填充完数据之后两者之间就没有连接了。

    (4)SqlDataAdapter 填充 DataSet 时,如果必须的表和列不存在则会自动创建。默认的返回架构中不包括主键(MissingSchemaAction 属性设置为AddWithKey时会创建主键)。

    (5)SqlDataAdapter可以使用FillSchema()方法填充DataSet时SqlDataAdapter 会创建 DataSet 的架构,并在填充数据之前就将主键信息包括进去。

    (6)当创建 SqlDataAdapter 的实例时,读/写属性将被设置为初始值。

    (7)SqlDataAdapter 与 SqlConnection 和 SqlCommand 一起使用,以便在连接到 SQL Server 数据库时提高性能。

    6、  实例

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Data.SqlClient;

    using System.Data;

    namespace sqlconnection1

    {

    class Program

    {

    private void SQLConnectionF(string source, string select)

    {

    //创建连接

    SqlConnection con = new SqlConnection(source);

    SqlDataAdapter adapt = new SqlDataAdapter(select,con);

    try

    {

    con.Open();

    Console.WriteLine("connection is successful!");

    }

    catch (Exception e)

    {

    Console.WriteLine("connection error is :{0}", e.ToString());

    }

    //创建DataSet

    DataSet ds = new DataSet();

    //将数据添加到DataSet中

    adapt.Fill(ds,"mytest");

    Console.WriteLine("name {,-15} number {,-10} low {,-10} high ");‘

    //输出DataSet中的数据

    foreach (DataRow row in ds.Tables["mytest"].Rows)

    {

    //Console.WriteLine(row["name"] + "/t" + row["number"] + "/t" +row["low"] + "/t" + row["high"]);

    Console.WriteLine("{0,-15} {1,-10} {2,-10} {3}",row["name"] , row["number"] , row["low"] , row["high"]);

    }

    Console.ReadLine();

    con.Close();

    }

    static void Main(string[] args)

    {

    string sou = "server=duanyf//SQLEXPRESS;" + "Initial Catalog=master;" + "UID = sa;" + "Password = dyf123";

    string sel = "SELECT name,number,low,high From dbo.spt_values";

    Program sqlcon = new Program();

    sqlcon.SQLConnectionF(sou, sel);

    }

    }

    }

  • 相关阅读:
    Android实例-Delphi在运行时更改Android屏幕旋转(IOS也支持,不过我可没有苹果机,测试不了)
    delphi实现电脑屏幕旋转(电脑屏幕,不是手机屏幕)
    教程-关于escape和URI之间的不同!
    在Delphi中URLEncode文件名的最佳方法是什么?
    Delphi实现js中的escape()编码和unescape()解码
    面向对象: 接口与对象生存周期,接口自动释放
    问题-Delphi在做窗体派生时提示Resource TForm2 not found
    问题-delphi idTCPserver-Socket error问题详解
    delphi 求两个时间差
    Delphi 解决StrToDateTime()不是有效日期类型的问题
  • 原文地址:https://www.cnblogs.com/dyufei/p/2573962.html
Copyright © 2011-2022 走看看