熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL存儲過程在.NET數據庫中的應用(2)

2013-11-15 14:37:08  來源: SQL Server 

  五.創建簡單存儲過程的數據庫應用程序
  
  下面我們就運用上述的不帶參數的存儲過程來一個數據庫應用程序其中還用到了ADONET中的SqlDataAdapter對象以及DataSet對象其中的SqlDataAdapter對象作為SQL Server數據庫和DataSet對象的橋梁將兩者聯系在一起SqlDataAdapter對象包含了兩個常用的方法Fill()方法和Update()方法其中的Fill()方法能從數據庫中獲取相應數據並填充到DataSet對象中而Update()方法顧名思義就是更新數據集的意思了在調用Fill()方法以前我們必須設置好SqlDataAdapter對象的SelectCommand屬性該屬性其實是一個SqlCommand對象SelectCommand屬性中包含有效的SQL語句並能據此從數據庫中獲取相應數據並填充到DataSet對象中
  
  首先我們創建一個Windows Forms應用程序編程語言為C#在Visual StudioNET中創建一個新的項目後給該項目添加一個新的類-Publishers類該類封裝了連接到後台數據庫並獲取數據集對象的業務邏輯步驟如下
  
  .添加必要的命名空間引用using SystemDataSqlClient;
  
  .給該類添加如下一些必要的變量
   
  .在該類的構造函數中完成連接後台數據庫獲取SqlDataAdapter對象等業務邏輯
   
  .最後為該類提供一個GetPublisherInfo()方法該方法用SqlDataAdapter對象填充DataSet對象並返回填充後的DataSet對象方法如下(值得注意的是SqlDataAdapter對象會隱式地打開數據庫連接並在獲取數據後隱式地關閉連接這就是說DataSet對象是工作在非連接模式下的而當你顯式地打開數據庫連接並獲取數據後SqlDataAdapter對象並不會將該連接關閉)
   
  完成Publishers類的設計後我們給主窗體添加一個DataGrid控件並用它來顯示DataSet對象中的數據首先給主窗體類添加如下成員變量
   
  這樣該應用程序一啟動主窗體的DataGrid控件中便顯示了運用上述不帶參數的存儲過程從Pubs數據庫中獲取的相應數據程序運行圖示如下
   
  六.創建帶參數的存儲過程的數據庫應用程序
  
  上面我們創建了一個不帶參數的存儲過程的應用程序下面我們就來創建一個更加復雜的數據庫應用程序在實際的數據庫應用中我們往往需要獲取數據並更新插入或刪除數據這時我們就需要用到帶有參數的存儲過程了同時在運用SqlDataAdapter對象時我們會調用它的Update()方法該Update()方法會自動根據DataSet對象中的DataTable對象內各條記錄的變化情況完成相應操作SqlDataAdapter對象還包含了UpdateCommandInsertCommandDeleteCommand等屬性這些屬性其實都是SqlCommand對象Update()方法會根據操作的類型選用相應的屬性
  
  在運用帶有參數的存儲過程建立數據庫應用程序時我們一般都要用到SqlParameter類該類封裝了各種與Sql參數相關的屬性和方法其中的屬性包括了ParameterNameSqlDBTypeDirectionSizeValueSourceColumn以及SourceVersion等其中ParameterNameSqlDBTypeDirectionSize等屬性是用於匹配存儲過程中定義的參數的比如下面定義的SqlParameter對象就是用來匹配前面定義的up_UpdatePublisherInfo存儲過程中的@pub_id參數的
  
  SqlParameter updParam = new SqlParameter( @pub_id SqlDbTypeChar );
  
  在上面的定義中雖然Direction屬性沒有明確地給出但是它的默認值為Input所以也就滿足了我們的需要而如果一個SqlParameter對象的Direction屬性為InputOutput或Output或ReturnValue那麼其Direction屬性就必須明確地說明了比如下面的代碼就明確地聲明了一個SqlParameter對象的Direction屬性為Output
  
  oParamDirection = ParameterDirectionOutput;
  
  其中的SourceColumn屬性是用於匹配一個DataTable對象中的DataColumn對象的這種匹配能在調用Update()方法更新DataTable對象時隱式地導入所需的SqlParameter對象如果在定義時沒有聲明該屬性那麼你必須在代碼中顯式地說明SqlParameter對象的SourceColumn屬性
  
  其中的SourceVersion屬性的默認值是DataRow對象相應字段中的當前值也就是要更新到數據庫中的值當然SourceVersion屬性也可以指向DataRow對象相應字段中的原始值也即從數據庫中獲取的初始值在數據庫事務處理系統中數據的同步性問題非常重要下面我們來建立一個能檢測數據同步性的存儲過程
   
  接著我們在上面的應用程序中調用該存儲過程以更新發行商的名稱首先在原有應用程序的基礎上完善其業務邏輯類-Publishers類
   
  應用程序的業務邏輯類完善之後在主窗體上添加一個名為更新數據集的按鈕並添加該按鈕的事件響應函數如下
   
  到此為止應用程序的業務邏輯類和主窗體類都已經更新完畢現在的應用程序能根據用戶的改用更新數據庫中的相關內容了運行程序如圖所示你在更新了數據後還可以打開SQL Server中的相應表並驗證數據有沒有更新成功
  
  七.總結
  
  本文向大家介紹了存儲過程的基本知識以及在NET數據庫應用程序中如何結合SqlDataAdapter對象DataSet對象等構建數據驅動的應用程序在本文中我們運用到了兩類存儲過程一類為簡單的不帶參數的存儲過程其運用方法相對容易另一類為帶有參數的存儲過程在調用該類存儲過程時還得運用到SqlParameter對象同時我們不難發現將數據更新業務邏輯封裝在存儲過程中是一種很好的設計方法它能提高應用程序的可管理性可擴展性以及數據庫的安全性類似的插入數據以及刪除數據的業務邏輯也可以封裝在存儲過程中並以相似的方法在應用程序中被運用最後希望本文對大家有不少幫助
  
  源代碼文件下載StoredProczip
  

From:http://tw.wingwit.com/Article/program/SQLServer/201311/22065.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.