zoukankan      html  css  js  c++  java
  • Typed DataSets in .NET

    Introduction:

    As all of we know, we can specify the Data type when we create a DataColumn for a DataTable. This is to enforce the runtime Type-safety for the column so that only data of specified data type can be stored in the column. In the same way, in most of the cases we prefer to make a DataSet itself as Type 杝afe so as to protect it from runtime mismatch. Hence Typed DataSets generate classes that expose each object the in the DataSet in Type-safe manner. These classes inherits directly from DataSet class.


    Let us look into a small example which explain the Typed DataSet,

    1. Using DataSet:

    ////////////////////////////////////////////////////////////////////////////

    //Create DataAdapter
    SqlDataAdapter daEmp = new SqlDataAdapter("SELECT
    empno,empname,empaddress FROM EMPLOYEE",conn);

    //Create a DataSet Object
    DataSet dsEmp = new DataSet();

    //Fill the DataSet
    daEmp.Fill(dsEmp,"EMPLOYEE");

    //Let us print first row and first column of the table
    Console.Write(dsEmp.Tables["EMPLOYEE"].Rows[0][0].ToString());

    //Assign a value to the first column
    dsEmp.Tables["EMPLOYEE"].Rows[0][0] = "12345";//This will generate runtime error as empno column is integer

    ///////////////////////////////////////////////////////////////////////////

    If we observe above code we will get a runtime error when this code gets executed as the value assigned to the column (empno) does not take string value. Also any misspell of the column will generate a runtime error. And also we need to go thro the hierarchy to get the final value.


    2. Using Typed DataSet:

    ////////////////////////////////////////////////////////////////////////////

    //Create DataAdapter
    SqlDataAdapter daEmp = new SqlDataAdapter("SELECT
    empno,empname,empaddress FROM EMPLOYEE",conn);

    //Create a DataSet Object
    EmployeeDS dsEmp = new EmployeeDS ();

    //Fill the DataSet
    daEmp.Fill(dsEmp,"EMPLOYEE");

    //Let us print first row and first column of the table
    Console.Write(dsEmp.EMPLOYEE[0].empno.ToString());

    //Assign a value to the first column
    dsEmp.EMPLOYEE[0].empno = "12345";//This will generate compile time error.

    ///////////////////////////////////////////////////////////////////////////

    If we see above code, a typed dataset is very much similar to a normal dataset. But the only difference is that the sehema is already present for the same. Hence any mismatch in the column will generate compile time errors rather than runtime error as in the case of normal dataset. Also accessing the column value is much easier than the normal dataset as the column definition will be available in the schema.


    How to Generate Typed DataSet?

    A Typed DataSet can be generated in two ways,

    1. Using Visual Studio .NET IDE.
    2. Using XSD.exe (Using VS.Net command prompt)
    Open VS.Net command prompt and Type XSD /? For the help on this exe.

    Creating a Typed DataSet using Visual Studio .NET IDE:

    Let me explain a step by step procedure to create a Typed DataSet,

     

    Creating a Typed DataSet using Visual Studio .NET IDE:

    Let me explain a step by step procedure to create a Typed DataSet,

    1. Open VS .Net IDE and Click on File -> New -> Project and Select Console Application.
    2. Enter name for the project. Say TypedDataSetTest.


     

     
    3. Right click on the solution and click on Add-> Add New Item will show a dialog box.

     
    Select DataSet from templates pane, give the name (Say TypedDs.xsd) and click on Open. This will add file by name TypedDs.xsd to the solution.

     
    4. Click on the Server Explorer browse to the database and drop the table on the TypedDs.xsd file.

    If we check the xml file for the same then we can see the schema for the table.

     
    This dataset can be used in the same manner as the normal dataset to get the data.

  • 相关阅读:
    魔塔猎人上线后反馈和后期计划
    自己做的roguelike+恶魔城游戏《魔塔猎人》已发布。
    我的开源项目
    Unity3D工程源码目录
    小二助手(react应用框架)-http访问
    小二助手(react应用框架)-概述
    unity3d开发app的框架
    为小团队协作和个人任务管理而生的Team应用
    使用unity3d开发app
    好久未登陆
  • 原文地址:https://www.cnblogs.com/thinker/p/36227.html
Copyright © 2011-2022 走看看