了解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結構也同樣道理。