網路工作室暑假後第一次培訓資料(ADO.NET建立訪問資料集)整理

zhiqiang21發表於2012-10-05

轉眼時間很快,還有兩天,8天假期的黃金週放假就要結束了。學校出去旅遊或者回家的同都陸陸續續的回學校了。假期中自己本來是想要回家的,但是最後還是取消了這個計劃。原因有二,第一就是放假回家坐車的人實在太多,第二就是家裡也沒什麼事,自己呢也不想家(特別想回家),所以就留在了學校。

前三天什麼也沒幹,就是純粹的玩。但是想想開學後就要開始給11級的同學培訓了,所以就把資料提前準備一下。

安排的培訓主要有三次大概內容如下:

1)ADO.NET的資料及的知識,主要是為了講SQlHelper資料庫訪問通用類做鋪墊

2)SQL Server的儲存過程/分頁,怎樣通過ADO.NET呼叫儲存過程/什麼是表連線查詢,多表查詢,等一些資料庫的知識

3)要簡單的介紹一下三層架構的知識,這個對於開發大型專案和團隊開發還是必須瞭解的,想的是做一個例子,讓他們實際的看一看利弊,但是要想充分的理解三層架構的思想,基本的面相物件的知識是必須有的。還有就是網站開發過程中一些常用的JS,JQuery外掛的使用。

下面的就是第一次培訓內容的資料整理。

因為是訪問資料庫的知識,先把資料庫中表的結構個欄位展現出來,如圖:


表的情況就是這個樣子。

在實際的開發過程中程式設計師對資料庫的操作主要是查詢操作,而且不是直接操作的資料表,而是由DBA根據程式設計師的需要而建立的檢視,程式設計師根據T-SQL語言操作檢視。

ADO.NET對資料庫的兩種操作方式:

1)連線查詢  2)非連線查詢

首先要知道幾個物件:connection ,command

1)連線查詢使用的就是連線查詢,在對資料庫進行操作的時候,始終保持對資料庫的連線。相對於資料集的操作方式,操作效率高。

Datareader物件就是完成該操作的物件。

在使用過該物件後,應該立即呼叫connection物件的close方法關閉資料庫連線。

備註:或者使用commandbehavior.Closeconnection()物件關閉資料庫連線。

Commandbehavior是列舉型別。

例項演示,首先在配置檔案中建立好資料庫連線字串的節點

  <!--在配置檔案中配置了資料庫連線字串-->
  <connectionStrings>
    <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=iLeague;Integrated Security=True"/>
  </connectionStrings>

l具體的對資料庫的操作看下面的程式碼演示:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public partial class _Default : System.Web.UI.Page 
{
    //首先引入Configuration名稱空間,然後宣告全域性的strConnection的全域性變數,讀取配置檔案中的資料庫連線字串
    string  strConString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

    protected void Page_Load(object sender, EventArgs e)
    {

        ShowData();
        //Response.Write(con.State);
    }

    public void ShowData()
    {
        SqlConnection con = new SqlConnection(strConString);
        //SqlCommand cmd = new SqlCommand("select * from T_Activity",con);
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandText = "select * from T_Activity where id=2";
        con.Open();
        SqlDataReader reader=cmd.ExecuteReader();

        //可以使用CommandBehavior這個列舉型別在完成資料庫操作後自動關閉資料庫連線
       // SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        if(reader.Read())
        {

            this.Label1.Text=reader[1].ToString();
            //this.Label1.Text = reader["activityName"].ToString();
        }

        con.Close();
        reader.Dispose();
        
    }
}

這樣就完成了ADO.NET對資料庫的連線式的查詢。

下面來看看非連線查詢

ADO.NET對資料庫的非連線查詢

1)這裡需要介紹三個物件dataadapter,dataset,datatable

dataAdapter物件也稱為資料介面卡物件。 Dataadapter物件使用connection物件連線資料來源,使用資料庫命令的command物件執行SQl操作將檢索出的資料送往資料集物件Dataset,或者將資料集中的資料編輯過後再次送往資料庫。

資料介面卡將資料填入資料集時呼叫Fill()方法,語句:

Dataadapter.Fill(datatable);//直接填充表

或者

Dataadapter.Fill(dataset,“例子表”)//填充dataset資料集中的“例子表”

完成後自動關閉資料庫連線。如果填充前資料庫是開啟的,則在完成填充後,要把資料庫連線仍舊大概,根據需要是否要關閉或則開啟資料庫。

Dataadapter呼叫Fill方法時,將使用與之相關的命令元件執行SQl語句將檢索出的資料新增到Dataset物件中的datatable物件中(如果datatable物件不存在,則自動建立該物件),或者直接填充到datatable的例項中。

執行SQl時候,必須保持與資料庫進行連線有效。但是資料庫連線是否開啟則不是必需的,如果資料庫連線是關閉的,則自動開啟檢索資料,完成後,

 

完成後自動關閉資料庫連線。如果填充前資料庫是開啟的,則在完成填充後,要把資料庫連線仍舊大概,根據需要是否要關閉或則開啟資料庫。

 

DataSet物件

 

 DataSet物件也稱資料集物件。DataSet物件用於表示那些儲存在記憶體中的資料,它相當於記憶體中的一個資料庫,他可以包括多個DataTable物件。DataSet物件主要用於管理儲存在記憶體中的資料及對資料的斷開操作。

 

由於DataSet物件提供的是非連線資料庫的資料來源,這樣減輕了資料庫及網路的資源。

看下面的程式碼演示:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public partial class DataAdapter和DataSet物件的使用 : System.Web.UI.Page
{
    //首先引入Configuration名稱空間,然後宣告全域性的strConnection的全域性變數,讀取配置檔案中的資料庫連線字串
    string strConString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

    protected void Page_Load(object sender, EventArgs e)
    {
        ShowData1();
    }

    /// <summary>
    /// 第一種填充資料集的方法
    /// </summary>
    public void ShowData1()
    {
        SqlConnection con = new SqlConnection(strConString);
        SqlCommand cmd = new SqlCommand("select * from T_Activity where id=2", con);
        //例項化DataAdapter物件,並且將資料庫操作命令傳遞給資料來源
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        //例項化DataTable物件
        DataTable table = new DataTable();
        //將資料介面卡物件DataAdapter物件運算元據庫返回的資料,填充到DataTable中
        adapter.Fill(table);
        //讀取Datatable中的資料

       
        Response.Write(table.Rows[0]["id"].ToString());
    }

    /// <summary>
    /// 第二種填充資料集的方法
    /// </summary>
    public void ShowData2()
    {
        SqlConnection con = new SqlConnection(strConString);

        //例項化DataAdapter物件,根據SqlDataAdapter物件的過載將資料庫操作命令,傳遞給資料來源
        SqlDataAdapter adapter = new SqlDataAdapter("select * from T_Activity where id=2", con);

        DataSet Ds = new DataSet();
        //資料介面卡將資料填入資料集中的T_Activity表
        adapter.Fill(Ds, "T_Activity");
        //填充資料到DataTable
        DataTable table = Ds.Tables["T_Activity"];
        Response.Write(table.Rows[0]["id"].ToString());
    }
}

第三個物件就是DataTable物件

DataTable物件

DatatTable是ADO.NET庫中的核心物件,有行也有列。

主要包括DataRow和DataColumn,分別代表行和列。

1)資料行(DataRow)

資料行是給定資料表中的一行資料,或者說是資料表中的一條記錄

提取資料表中的行的語句:

DataRow  Dr=dt。Rows[n];

其中:DataRow代表資料行類,Dr代表資料行物件,dt是資料表物件。n代表的是行序號,並且從0開始。

2)資料列(DataColumn)

資料表中的資料列(欄位或者屬性)定義了表的結構。

某列的值需要在資料行的基礎上進行,

string  dc=dr.Column[“欄位名”].ToString();

或者string  dc=dr.Column[i].ToString();//i表示對應列的索引

具體的訪問資料庫的程式碼,看下面:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public partial class Datatable物件的使用 : System.Web.UI.Page
{
    //首先引入Configuration名稱空間,然後宣告全域性的strConnection的全域性變數,讀取配置檔案中的資料庫連線字串
    string strConString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

    protected void Page_Load(object sender, EventArgs e)
    {
        ShowData();
    }

    //用來顯示資料
    public void ShowData()
    {
        SqlConnection con = new SqlConnection(strConString);
        SqlCommand cmd = new SqlCommand("select * from T_Activity ", con);

        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataTable table = new DataTable();
        //填充資料集中的table
        adapter.Fill(table);

        //使用DataRow物件訪問資料表中索引行為第5行的資料行
        DataRow Dr=table.Rows[4];
        //根據資料行物件訪問所在行的對應索引列為“activityName”所對應的值
        string strActivityName=Dr["activityName"].ToString();

        Response.Write(strActivityName);

    }
}

這樣就完成了ADO.NET 中所有建立資料集,訪問資料集。


相關文章