一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C# 數(shù)據(jù)庫存儲過程的講解應(yīng)用

 無名小卒917 2014-07-05

在使用VS 2012+SQL Server做簡單的銷售系統(tǒng)中,通常會遇到一些使用存儲過程的情況,那究竟什么是存儲過程,它的好處是什么呢?如果在SQL Server中創(chuàng)建一個存儲過程,C#中怎樣聯(lián)系存儲過程呢?

一.存儲過程

存儲過程 (Stored Procedure) 是大型數(shù)據(jù)庫系統(tǒng)中 , 一組為完成特定功能的 SQL 程序代碼 . 它已經(jīng)過編譯后存儲在數(shù)據(jù)庫中 , 用戶可以通過制定的存儲過程名和參數(shù)來執(zhí)行它 . 至于存儲過程的好處:

1. 存儲過程是在創(chuàng)建時被編譯和優(yōu)化過 , 調(diào)用一次后相關(guān)信息就保存在數(shù)據(jù)庫中, 同時內(nèi)存會保留一份存儲過程 , 下次調(diào)用就可以直接從內(nèi)存中調(diào)用執(zhí)行 , 不占用 CUP 資源 , 所以執(zhí)行速度更快 .

2.存儲過程可以減少網(wǎng)絡(luò)通信流量,一個百行T-SQL代碼的操作可以通過 執(zhí) 一條過程代碼替換,且不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼.

3.存儲過程允許模塊化設(shè)計,當(dāng)創(chuàng)建后即可在程序中調(diào)用多次,這可以改進應(yīng)用程序的可維護性,并允許與應(yīng)用程序統(tǒng)一訪問數(shù)據(jù)庫.

4. 存儲過程安全性更高,可以使用數(shù)據(jù)庫的安全機制限制對數(shù)據(jù)庫的訪問, 如授權(quán)某用戶只能執(zhí)行不能修改存儲過程,同時它存儲過程可以加強應(yīng)用程序的安全性使其不受SQL注入工具.

5.存儲過程允許延遲綁定,可以穿件引用尚不存在的表,在創(chuàng)建存儲過程中只檢查語法,知道第一次執(zhí)行該存儲過程時才對其編譯,如果引用的表不存在能創(chuàng)建存儲過程,但運行會失敗.

上面就是一些我對存儲過程的認(rèn)識,推薦大家在做系統(tǒng)時盡量使用存儲過程.上面有些知識引致周志奎的《數(shù)據(jù)庫系統(tǒng)原理》,如果想更詳細(xì)的了解存儲過程,可以訪問該博客(推薦): http://www.cnblogs.com/tjsquall/archive/2008/02/04/1064402.html

二.SQLServer如何使用存儲過程

 如果在SQL Server中使用存儲過程呢?存儲過程的創(chuàng)建語句主要如下,當(dāng)創(chuàng)建完成可以通過execute執(zhí)行存儲過程:

create procedure 存儲過程名 [參數(shù)1,….參數(shù)n]
as
begin
Transact SQL語句塊;
End
--執(zhí)行
execute 存儲過程名 [參數(shù)1,….參數(shù)n]

舉個實例:我在數(shù)據(jù)庫中使用 create 創(chuàng)建了一張 Telephone, 并使用 Insert 向該表中已經(jīng)插入了數(shù)據(jù) , 現(xiàn)在想使用存儲過程查詢具體手機品牌為 諾基亞 的手機信息 , 代碼如下 :

-- ===========================================
-- 創(chuàng)建存儲過程(一)
-- 手機庫存查詢 查詢手機品牌
-- ===========================================
--創(chuàng)建存儲過程
create procedure PSelcetPhoneName
@Pname varchar(20)
as
begin
select phonename as 手機品牌,phoneclass as 手機型號,phoneid as 序列號,
price as 出廠價格,arrtime as 進貨時間,period as 保修時間
from Telephone where phonename=@Pname
end
--刪除存儲過程
drop procedure PSelcetPhoneName
--執(zhí)行存儲過程
execute PSelcetPhoneName '諾基亞'

當(dāng)執(zhí)行execut時,會顯示如下信息:

同時,下面在介紹一個更新的存儲過程的代碼,方便大家舉一反三.它的功能是把用戶名為 ”bbbbb” 的用戶密碼更新為 ”123456”, 用戶身份更新為 銷售員 ”. 執(zhí)行代碼 ,select 查詢 Users 表可以發(fā)現(xiàn)信息更新 .

-- ===========================================
-- 創(chuàng)建存儲過程(五)
-- 管理員修改員工信息存儲過程
-- ===========================================
create procedure PUpdateUser
(@pwd varchar(20),@role varchar(20),@name varchar(20))
as
begin
update Users 
set
userpwd = @pwd,userrole=@role
where username = @name
end
--執(zhí)行存儲過程
execute PUpdateUser '123456','銷售員','bbbbb'

三.C# winform如何結(jié)合存儲過程

1.界面設(shè)計

設(shè)計界面如下圖所示,主要有dataGridView(顯示數(shù)據(jù)表格),button(按鈕),textBox組成.

2.源代碼講解

其核心代碼及步驟如下:

SqlConnection con = new SqlConnection("數(shù)據(jù)庫服務(wù)");            //定義SQL Server連接對象
SqlConnection.Open();                                          //打開數(shù)據(jù)庫連接
SqlCommand com = new SqlCommand("存儲過程名", 數(shù)據(jù)庫連接對象);     //使用Command創(chuàng)建存儲過程
SqlCommand.CommandType = CommandType.StoredProcedure;          //設(shè)置Command對象類型為存儲過程
SqlCommand.Parameters.Add();                                   //添加參數(shù)并賦值 
SqlCommand.Parameters.Add("@Pname", SqlDbType.NVarChar, 20);   //添加narchar(20)類型@Pname
SqlCommand.ExecuteNonQuery();                                  //執(zhí)行存儲過程
SqlConnection.Close();                                         //關(guān)閉連接
SqlConnection.Dispose();                                       //釋放資源

源代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

//新加命名空間
using System.Data.SqlClient;
using System.Reflection;

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

        private void button1_Click(object sender, EventArgs e)
        {
            //定義數(shù)據(jù)庫連接語句:服務(wù)器=.(本地) 數(shù)據(jù)庫名=TelephoneMS(手機管理系統(tǒng))
            string consqlserver = "Data Source=.;Initial Catalog=TelephoneMS;Integrated Security=True;";
            //定義SQL Server連接對象
            SqlConnection con = new SqlConnection(consqlserver);
            //打開連接
            con.Open();
            //定義數(shù)據(jù)庫執(zhí)行一個SQL語句或存儲過程                   
            SqlCommand com = new SqlCommand("PSelcetPhoneName", con);
            //指定類型為存儲過程  
            com.CommandType = CommandType.StoredProcedure;  
            //存儲過程添加變量并賦值給textBox1    
            com.Parameters.Add("@Pname", SqlDbType.NVarChar, 20).Value = textBox1.Text.ToString();
            //定義獲取數(shù)據(jù)
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataSet ds = new DataSet();

            try
            {
                da.Fill(ds);                                  //填充數(shù)據(jù)
                dataGridView1.DataSource = ds.Tables[0];      //顯示在dataGridView中
            }
            catch (Exception msg)
            {
                MessageBox.Show(msg.Message);                  //異常處理
            }
            finally
            {
                con.Close();                                   //關(guān)閉連接
                con.Dispose();                                 //釋放連接
                da.Dispose();                                  //釋放資源
            }
        }
    }
}

3.運行結(jié)果

總結(jié):希望文章對大家有所幫助,作者已盡力,如果有不足和不喜歡的地方,見諒!PS:作者遇到一個問題,在CSDN寫博客時,命名1.2.3.4.5中行間距間隙很大,怎樣設(shè)置讓它緊挨著.希望知道的人告知,謝謝!

(By:Eastmount 2013-9-11 19點 http://blog.csdn.net/eastmount

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩精品在线观看完整版| 久久精品国产第一区二区三区| 人妻少妇av中文字幕乱码高清| 亚洲精品高清国产一线久久| 亚洲一区二区三区四区性色av| 亚洲国产一区精品一区二区三区色| 欧美日韩精品一区二区三区不卡| 日韩毛片视频免费观看| 久久国产精品热爱视频| 在线观看免费午夜福利| 夫妻性生活黄色录像视频| 中文字幕精品人妻一区| 亚洲精品国产精品日韩| 少妇成人精品一区二区| 一区二区三区精品人妻| 欧美小黄片在线一级观看| 99久久人妻精品免费一区| 黄色三级日本在线观看| 黄色三级日本在线观看| 国产亚洲精品俞拍视频福利区| 日本精品理论在线观看| 成人精品一级特黄大片| 久久精品亚洲精品一区| 国产欧美一区二区另类精品| 91国内视频一区二区三区| 日韩欧美亚洲综合在线| 国产成人精品在线播放| 亚洲午夜av久久久精品| 丰满人妻一二三区av| 高清一区二区三区四区五区| 九九九热在线免费视频| 日本高清一区免费不卡| 91精品国产av一区二区| 99热在线精品视频观看| 亚洲国产精品肉丝袜久久| 国产三级不卡在线观看视频| 在线日本不卡一区二区| 日本精品视频一二三区| 精品日韩欧美一区久久| 在线免费观看黄色美女| 91人妻久久精品一区二区三区|