• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ADO.Net 类型化DataSet的简单介绍

    一、弱类型DataSet的缺点:
    1、只能通过列名引用,dataset.Tables[0].Rows[0]["Age"],如果写错了列名编译时不会发现错误,因此开发时必须要记着列名。
    2、int age=Convert.ToInt32(dataset.Rows[0]["Age"]),取到的字段的值是object类型,必须小心翼翼的进行类型转换,不仅麻烦,而且容易出错。
    3、将DataSet传递给其他使用者,使用者很难识别出有哪些列可以供使用。
    4、运行时才能知道所有列名,数据绑定麻烦,无法使用Winform、ASP.Net的快速开发功能。
    5、自己动手写强类型DataSet(类型化DataSet,TypedDataSet),创建继承自DataSet的PersonDataSet类,封装出int? Age等属性和bool IsAgeNull等方法,向PersonDataSet中填充。

    二、VS自动生成强类型DataSet:
    1、步骤:添加->新建项->数据集
    2、将表从服务器资源管理器拖放到DataSet中。注意拖放过程是自动根据表结构生成强类型DataSet等类,没有把数据也拖过来,程序还是连的那个数据库,自动将数据库连接字符串写在了App.Config中。
    3、代码中使用DataSet示例:CC_RecordTableAdapter adapter=new CC_RecordTableAdapter();如何得知Adapter的类名?选中DataSet中下半部分的Adapter,Name属性就是类名。需要右键点击类名->解析
    4、取得所有的数据:adapter.GetData(),例子程序:遍历显示所有数据,iadapter.GetData().Count;adapter.GetData()[i].Age。
    5、常见问题:类名敲不对,表名+TableAdapter,表名+DataTable,表名+Row,然后用“解析”来填充类名。
    6、常见问题:类的内部定义的类要通过包含namespace的全名来引用,不能省略。类的内部定义的类就能避免同一个namespace下类不能重名的问题。

    三、更新DataSet:
    1、调用Adapter的Update方法就可以将DataSet的改变保存到数据库。adapter.Update(datatable);
    2、要调用Update方法更新必须设置数据库主键,同样,Delete方法也是如此;
    3、常见错误:“当传递具有已修改行的DataRow集合时,更新要求有效的UpdateCommand”,要为表设置主键。“谁都变了,唯有主键不会变”,程序要通过主键来定位要更新的行。忘了设主键怎么办?先到数据库中设置主键,然后在DataSet的对应DataTable上点击右键,选择“配置”,在对话框中点击“完成”。好习惯:所有表都要设置主键!!!看看为什么会自动帮我们GetData、Update、Delete。   
    现在做个简单的练习:
    第一步:添加一个数据库,名为DB1.mdf(表T_Persons含有Id,Name,Age字段)
    第二步:添加一个应用程序配置文件:App.config文件,其代码如下:

    复制代码 代码如下:

    ?xml version="1.0" encoding="utf-8" ?>
    configuration>
        configSections>
        /configSections>
        connectionStrings>
            add name="类型化DataSet.Properties.Settings.DB1ConnectionString"
                connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB1.mdf;Integrated Security=True;User Instance=True"
                providerName="System.Data.SqlClient" />
        /connectionStrings>
    /configuration>

    第三步:再添加一个数据集文件:DataSetPersons.xsd,并将表T_Persons拖到数据集上。
    第四步:在窗体Form1界面放一按钮,当单击它时逐个地显示出数据库表里的所有Name。窗体代码如下:

    复制代码 代码如下:

      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Linq;
      using System.Text;
      using System.Windows.Forms;
      using 类型化DataSet.DataSetPersonsTableAdapters;

     namespace 类型化DataSet
     {
         public partial class Form1 : Form
         {
             public Form1()
             {
                 InitializeComponent();
             }

             private void Show_Click(object sender, EventArgs e)
             {
                 //表名+TableAdapter,表名+DataTable,表名+Rows,然后用“解析”来填充类名
                 T_PersonsTableAdapter adapter = new T_PersonsTableAdapter();
                 类型化DataSet.DataSetPersons.T_PersonsDataTable personsTable = adapter.GetData();
                 for (int i = 0; i personsTable.Count; i++)//假如是personsTable.Rows.Count则变为弱类型了
                 {
                     类型化DataSet.DataSetPersons.T_PersonsRow person = personsTable[i];
                     MessageBox.Show(person.Name);
                 }
             }
         }
     }

    提醒:对于上面引用类内部的类的情况,写类时的方法是:表名+TableAdapter,表名+DataTable,表名+Rows,然后用“解析”来填充类名。

    四、其它问题:
    1、插入新行,调用Insert方法。
    2、数据库表中增加了字段后怎么办?DataSet设计器中点【配置】,对话框中点【查询生成器】,勾选新增加的字段即可。删除字段同样如此。
    3、要修改字段就要重新配置生成,这就是强类型DataSet的弱点。
    4、常见错误:报错、数据为空。判断列的值为空的方法:Is**Null
    5、为什么Select方法会填充、Update方法会更新、Insert方法会插入?看看Adapter的SelectCommand等属性就知道了,都是那些SQL语句在起作用,如果有需要完全可以手工调整。  如: 

    复制代码 代码如下:

         personsTable[0].Name = "Lucy";
                adapter.Update(personsTable);//调用Update方法将对数据集的修改更新到数据库
                adapter.Insert("John", 50);

    您可能感兴趣的文章:
    • ASP.NET中DataTable与DataSet之间的转换示例
    • ASP.NET 绑定DataSet中的多个表
    • asp.net DataSet进行排序
    • ASP.NET用DataSet导出到Excel的方法
    • asp.net下DataSet.WriteXml(String)与(Stream)的区别
    • asp.net下用DataSet生成XML的问题
    • 详细说明asp.net中datareader 和 dataset 的区别
    • ASP.NET中实现把Json数据转换为ADO.NET DataSet对象
    • asp.net如何将DataSet转换成josn并输出
    • .NET中如何将文本文件的内容存储到DataSet
    上一篇:vs.net控件updatePanel实现无刷新的方法
    下一篇:水晶易表调用C#的WebService,返回数据集合的应用分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ADO.Net 类型化DataSet的简单介绍 ADO.Net,类型化,DataSet,的,