小议ADO.NET对象模型


了解ADO.NET模型对数据应用程序开发很重要,下面是我今天学习总结的ADO.NET新手入门级的知识,希望对新手有用,也期待以这块破砖头引来高手们的玉哦!
   DataSet(数据集)。它表示整个数据库的一个子集,无需跟数据库有直接连接,缓存
在机器中,DataSet需要周期性地跟父数据库进行连接,以对数据库和DataSet相互更新。

   DataSet不仅仅从一个表中获得几行,而且要获得一组表,它们包含有原数据库关系和约束的必要原数据。

   DataSet由DataTable对象和DataRelation对象组成,Tables属性返回的一个DataTableCollection保存着所有的DataTable对象。

  DataSet结构:

   Rows。DataTable的Rows集合返回表的行集合。使用这个集合查看数据库的查询结果,在历遍查看每个记录。要访问数据集,我们只需要访问DataSet中的表DataTable,然后历遍Rows集合即可。

   DataAdapter(数据库适配器)。是关系型数据库的抽象,它的角色是作为DataSet和数据库之间的桥梁,DataAdapter提供的Fill()方法可以从数据库中获取数据并生成DataSet。

  数据通讯的过程如图:

  图片看不清楚?请点击这里查看原图(大图)。

  下面让我们动手试试吧!

  数据库表结构:

  图片看不清楚?请点击这里查看原图(大图)。

  测试代码如下:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsApplication5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string commandstring = "select foodname,id ,foodprice from tb_food ";
            string connectionstring = "server=.;database=db_MrCy;uid=sa;pwd=";
            SqlDataAdapter DataAdapter = new SqlDataAdapter(commandstring, connectionstring);      //  
            DataSet dataset = new DataSet();
            DataAdapter.Fill(dataset);                   //  填充到数据集
            DataTable dataTable = dataset.Tables[0];

            foreach (DataRow dataRow in dataTable.Rows)
                listBox1.Items.Add(dataRow["foodname"]);
           
        }
    }
}

  测试结果:

  用下面代码,我们可以简单地得到某条记录的某个字段值:

MessageBox.Show(dataTable.Rows[2]["foodname"].ToString());

  后话:我觉得本文知识点对VB程序员的ADO.NET迁移很重要,究其原因,是ADO.NET的非连接型(disconnecten)的数据架构,在这里数据从数据库取出,缓存在本地及其中。由上述select语句得到的DataSet数据集只包含foodname,id ,foodprice三个字段,所得得到的dataTable结构也同样道理。



相关阅读:
JavaScript 中级笔记 第三章
php的Smarty中实现模板嵌套
一起学wp7 XNA游戏开发(二. XNA Game 开发架构)
创建数据库php代码 用PHP写出自己的BLOG系统
兼容IE与firefox的css 线性渐变(linear-gradient)
DotNet源代码中的模式Builder生成器模式
asp 常用函数用法
为什么要使用CSS
CSS framework日常开发的经验总结
用css编写无限分级弹出菜单 不用script
javascript秒数倒计时自动跳转代码
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
Citrix完善桌面虚拟化 发布XenApp 5
几个javascript的小工具(原创)
快速导航

Copyright © 2016 phpStudy |