亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        模糊查詢技術(shù)在企業(yè)數(shù)據(jù)庫(kù)中的實(shí)現(xiàn)

        2008-12-31 00:00:00張穎超卜英竹
        商場(chǎng)現(xiàn)代化 2008年12期

        [摘要] 數(shù)據(jù)庫(kù)查詢已成為當(dāng)今社會(huì)各行業(yè)不可缺少的部分,而傳統(tǒng)的數(shù)據(jù)庫(kù)并不能處理模糊現(xiàn)象,本文是在SQL的Northwind數(shù)據(jù)庫(kù)中為employees表建立新的存儲(chǔ)過(guò)程以便在.net中按Lastname進(jìn)行模糊查詢,從而克服了傳統(tǒng)查詢的局限性。

        [關(guān)鍵詞] SQL 存儲(chǔ)過(guò)程 模糊查詢

        一、引言

        隨著信息時(shí)代的到來(lái)和Internet技術(shù)的發(fā)展,數(shù)據(jù)庫(kù)查詢已成為人們?nèi)粘I钪胁豢扇鄙俚牟糠帧S绕涫菍?duì)于企業(yè)來(lái)說(shuō),數(shù)據(jù)庫(kù)的精確查詢顯然不能滿足它的各種查詢要求,這會(huì)導(dǎo)致企業(yè)效率的不足。而現(xiàn)有查詢技術(shù)主要是以傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)為基礎(chǔ),僅對(duì)精確數(shù)據(jù)進(jìn)行訪問(wèn)和處理。然而在客觀世界中,模糊概念和現(xiàn)象大量存在,也就有大量非理想化或模糊的查詢操作。為了克服傳統(tǒng)查詢的局限性,需要提出一種更具“智能化”、能對(duì)模糊查詢要求快速定位的新技術(shù)。本文只是從眾多模糊查詢中提出一種——利用存儲(chǔ)過(guò)程實(shí)現(xiàn)模糊查詢。

        二、相關(guān)概念

        1.模糊的概念

        目前主流的數(shù)據(jù)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù),它是以布爾邏輯為基礎(chǔ)的,所以對(duì)于一個(gè)查詢條件,數(shù)據(jù)庫(kù)中的一條記錄要么滿足要么不滿足。

        但是人類語(yǔ)言的一個(gè)很大特點(diǎn)就是具有模糊性、不確定性、不精確性,比如在數(shù)據(jù)庫(kù)中查找“一個(gè)年輕的高個(gè)男子”,在這個(gè)條件中“年輕”和“高個(gè)”是模糊的概念;另外在許多情況下,用戶對(duì)查詢并不要求給出一個(gè)精確匹配的結(jié)果,只要求結(jié)果在一定程度上滿足條件即可。這些特點(diǎn)應(yīng)該在數(shù)據(jù)庫(kù)的表達(dá)、設(shè)計(jì)以及查詢功能上得到一定的體現(xiàn)。

        模糊數(shù)據(jù)表達(dá)所要解決的問(wèn)題是在傳統(tǒng)的關(guān)系模型的哪些方面引入模糊性,從而使得現(xiàn)實(shí)世界中的某些不確定或不精確信息在數(shù)據(jù)庫(kù)中得到反映。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)中,有三個(gè)基本的亦是隱含著的假設(shè):

        (1)在任一關(guān)系(表)中的每一元組(行)中的每一個(gè)屬性(字段)的值是其值域中的單個(gè)元素。例如,若年齡的取值域是[0,200],則張三的年齡必須是[0,200]中的一個(gè)元素,如21。

        (2)在任一關(guān)系(表)中的每一個(gè)元組(行)都完全隸屬于該關(guān)系(表),即每一出現(xiàn)在表中的行都與表所表達(dá)的概念完全相符。

        (3)屬性(字段)的取值域中的任意兩個(gè)元素都被認(rèn)為相互間完全不同。比如年齡值域[0,200]中的21和22就被認(rèn)為是完全不同的兩個(gè)值。 針對(duì)上述三種假設(shè)的不同程度上的模糊擴(kuò)展,則形成不同的模糊數(shù)據(jù)表達(dá)模式。

        模糊查詢是指通過(guò)使用模糊集合或具有模糊特征的語(yǔ)言詞對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢。也就是說(shuō),查詢標(biāo)準(zhǔn)或查詢條件可包含模糊集合或語(yǔ)言詞,而數(shù)據(jù)庫(kù)本身則可以是傳統(tǒng)(非模糊)數(shù)據(jù)庫(kù),也可是模糊數(shù)據(jù)庫(kù)。目前國(guó)際上做的較多的工作主要集中在對(duì)傳統(tǒng)數(shù)據(jù)庫(kù)的模糊查詢上。

        模糊關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)和傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)一樣,旨在獲得合理的數(shù)據(jù)庫(kù)模式(Schema),進(jìn)而避免可能出現(xiàn)的數(shù)據(jù)冗余和修改異常。

        2.2SQL數(shù)據(jù)庫(kù)的模糊查詢

        SQL Server數(shù)據(jù)庫(kù)可以用SUBSTRING函數(shù)來(lái)實(shí)現(xiàn)模糊查詢,SUBSTRING函數(shù)返回一個(gè)字符串的子串(從n1開(kāi)始,共n2個(gè)字符)。其格式為:SUBSTRING(string fromn1 to n2)

        如:

        SELECT SUBSTRING(CUSTNAME FROM1 FOR 10) FROM CUSTOMER

        其意為返回CUSTNAME的頭10個(gè)字符。但SUBSTRING函數(shù)只能實(shí)現(xiàn)一定字段的模糊查詢,而且本身區(qū)分大小寫,需在程序中增加代碼以提高其模糊度,程序代碼較長(zhǎng),比較煩瑣,用SQL的Select查詢命令則可以很容易地實(shí)現(xiàn)數(shù)據(jù)庫(kù)的查詢。

        在Select命令的Where子句中使用“LIKE”關(guān)鍵詞和“%”通配符就可以做到模糊查詢。下面語(yǔ)句在my_database數(shù)據(jù)庫(kù)的Product表中查找ProductName字段的值含有“Sa”字符串的所有記錄。

        Use my_database

        Select * From Product

        Where ProductName LIKE “%Sa%”

        GO

        這種模糊查詢雖然簡(jiǎn)便但效率不足,SQL Server數(shù)據(jù)庫(kù)還提供了一種叫做Stored Procedure (存儲(chǔ)過(guò)程)的數(shù)據(jù)庫(kù)對(duì)象,用戶可以將一些常用的命令過(guò)程以存儲(chǔ)過(guò)程的形式存儲(chǔ)起來(lái),需要運(yùn)行這些存儲(chǔ)過(guò)程時(shí),只要輸入存儲(chǔ)過(guò)程名即可。這樣不僅簡(jiǎn)化了操作,而且提高了效率。存儲(chǔ)過(guò)程名的選取應(yīng)符合SQL Server的命名規(guī)則,當(dāng)它以“?!遍_(kāi)頭時(shí),表示一個(gè)臨時(shí)存儲(chǔ)過(guò)程,它只在應(yīng)用程序運(yùn)行時(shí)存在,程序結(jié)束后,被自動(dòng)刪除。

        下面的語(yǔ)句創(chuàng)建一個(gè)名字為#query的臨時(shí)存儲(chǔ)過(guò)程:

        Create Procedure #Query

        As

        Select * From Product

        Where ProductName LIKE “%Sa%”

        三、數(shù)據(jù)庫(kù)模糊查詢的ASP實(shí)現(xiàn)方法

        一般來(lái)講一個(gè)個(gè)簡(jiǎn)單的利用存儲(chǔ)過(guò)程實(shí)現(xiàn)模糊查詢分以下五步部組成:

        1.建立存儲(chǔ)過(guò)程

        在SQL中的Northwind數(shù)據(jù)庫(kù)中為employess表新建存儲(chǔ)過(guò)程:

        CREATE PROCEDURE Employees_Sel @lastname nvarchar (20)

        AS

        select lastname from Employees where lastname like ‘%’ + @lastname + ‘%’

        GO

        2.窗體設(shè)計(jì)

        (1)新建ASP.NET Web應(yīng)用程序,命名為WebSql,選擇保存路徑然后點(diǎn)擊確定。

        (2)向窗體中添加一個(gè)Label、一個(gè)Textbox和一個(gè)Button按鈕,然后再添加一個(gè)DataGrid控件,右擊DataGrid控件選擇屬性生成器,然后在打開(kāi)的窗口中選擇列,去掉自動(dòng)創(chuàng)建列前的對(duì)勾,再向選定列中添加一個(gè)綁定列將頁(yè)眉設(shè)為L(zhǎng)astName,將數(shù)據(jù)字段設(shè)為L(zhǎng)astName點(diǎn)擊確定。

        3.創(chuàng)建中間數(shù)據(jù)層

        右擊解決方案,選擇新建-項(xiàng)目-類庫(kù),名稱為ClaSQL,選擇保存路徑然后點(diǎn)擊確定。在打開(kāi)的類庫(kù)中添加以下代碼:

        Imports System.Data.SqlClient

        Public Class Class1

        Dim scom As New SqlConnection(“server

        =localhost;database=northwind;uid=sa;pwd=123”)

        //創(chuàng)建一個(gè)進(jìn)行查詢的過(guò)程

        Public Function Emp_Sel(ByVal lastname As String) As DataSet

        scon.Open()

        scon.Close()

        //定義命令對(duì)象,并使用儲(chǔ)存過(guò)程

        Dim scom As New SqlCommand

        scom.CommandType=CommandType.StoredProcedure

        scom.CommandText = “Employess_Sel”

        scom.Connection = scon

        //定義一個(gè)數(shù)據(jù)適配器,并設(shè)置參數(shù)

        Dim sda As New SqlDataAdapter(scom)

        sda.SelectCommand.Parameters.Add(\"@lastname\", SqlDbType.NVarChar).Value = lastname

        //定義一個(gè)數(shù)據(jù)集對(duì)象,并填充數(shù)據(jù)集

        Dim ds As New DataSet

        Try

        sda.Fill(ds)

        Catch ex As Exception

        End Try

        Return ds

        End Function

        End Class

        4.引用中間數(shù)據(jù)層

        在ClaSql項(xiàng)目上右擊,選擇生成,然后在WebSql項(xiàng)目的“引用”上右擊,選擇添加引用,再選擇項(xiàng)目,將ClaSql項(xiàng)目添加到選定的組件框中,然后點(diǎn)擊確定。

        5.WebForm1.aspx窗體代碼設(shè)計(jì)

        打開(kāi)WebSql項(xiàng)目下的WebForm1.aspx文件,雙擊Button按鈕打開(kāi)代碼窗口,完整的代碼如下:

        Public Class WebForm1

        Inherits System.Web.UI.Page

        //窗體代碼略

        //搜索按鈕事件

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        //定義變量?jī)?chǔ)存文本框的輸入,出于安全的目的對(duì)其進(jìn)行轉(zhuǎn)換

        Dim lastname As String = TextBox1.Text

        lastname = lastname.Replace(“”, “”)

        lastname = lastname.Replace(“<“, “”)

        lastname = lastname.Replace(“>”, “”)

        lastname = lastname.Replace(“’”, “’”)

        lastname=lastname.Replace(“chr(13)”,”

        ”)

        lastname=lastname.Replace(“chr(10)”,”

        ”)

        //創(chuàng)建一個(gè)新的類實(shí)例,并調(diào)用查詢過(guò)程綁定數(shù)據(jù)

        Dim myCla As New ClaSql.Class1

        DataGrid1.DataSource= myCla.Emp_Sel(lastname)

        DataGrid1.DataBind()

        End Sub

        End Class

        由于存儲(chǔ)過(guò)程具有存儲(chǔ)過(guò)程允許標(biāo)準(zhǔn)組件式編程、存儲(chǔ)過(guò)程能夠?qū)崿F(xiàn)較快的執(zhí)行速度、存儲(chǔ)過(guò)程能夠減少網(wǎng)絡(luò)流量以及存儲(chǔ)過(guò)程可被作為一種安全機(jī)制來(lái)充分利用等的優(yōu)點(diǎn),所以任何一個(gè)設(shè)計(jì)良好的數(shù)據(jù)庫(kù)應(yīng)用程序都應(yīng)該用到存儲(chǔ)過(guò)程,但是其中也存在著許多安全隱憂,因此在對(duì)數(shù)據(jù)庫(kù)操作中應(yīng)盡量采取一些措施,如使用儲(chǔ)存過(guò)程要使用復(fù)雜賬戶的密碼、對(duì)每個(gè)不同賬戶只設(shè)置相應(yīng)的插入或刪除等權(quán)限以及對(duì)數(shù)據(jù)庫(kù)的操作應(yīng)該盡量將其封裝到中間層(類庫(kù))中等等,這樣即可以實(shí)現(xiàn)代碼的重用,也方便以后的進(jìn)行修改。

        四、小結(jié)

        通過(guò)對(duì)三種SQL模糊數(shù)據(jù)庫(kù)的查詢比較,總結(jié)出利用存儲(chǔ)過(guò)程實(shí)現(xiàn)模糊查詢的可取之處,并給出了實(shí)現(xiàn)方法,方便了企業(yè)數(shù)據(jù)庫(kù)的查詢,提高了效率。對(duì)于存在的不安全因素也給出了可行性建議。今后還需對(duì)模糊數(shù)據(jù)的操作和完整性約束等方面進(jìn)行研究。

        參考文獻(xiàn):

        [1]何新貴:模糊數(shù)據(jù)庫(kù)系統(tǒng)[M].清華大學(xué)出版社,1994年12月

        [2]劉應(yīng)明任平:模糊性——精確性的另一半[M].清華大學(xué)出版社,2000年12月

        [3]蘇嘯:數(shù)據(jù)庫(kù)原理與SQL Server 2000教程[M].北京工業(yè)大學(xué)出版社,2002,256~271

        [4]李蘭友楊曉光:ASP.NET實(shí)用程序設(shè)計(jì)[M].北京交通大學(xué)出版社,2005,95~176

        [5]管清波:用SQL語(yǔ)句實(shí)現(xiàn)查詢的方法[J].開(kāi)發(fā)經(jīng)驗(yàn)

        国产一区二区三区我不卡| 一本色道久久88综合亚精品| 久久亚洲国产中v天仙www| 欧美性一区| 国产精品制服一区二区| 中文天堂一区二区三区| 国产自拍视频免费在线观看| 一本色道久在线综合色| 成人影片麻豆国产影片免费观看 | 四川丰满妇女毛片四川话| 日本黄页网站免费观看| 亚洲 都市 校园 激情 另类| 久久男人av资源网站无码| 久久激情人妻中文字幕| 国产一区二区三区精品毛片| 亚洲最新国产av网站| 粗大的内捧猛烈进出少妇| 色多多a级毛片免费看| 男女超爽视频免费播放| 一区二区三区放荡人妻| 日韩亚洲国产av自拍| 国产农村妇女毛片精品久久麻豆| 国产精品网站91九色| 中文字幕色av一区二区三区| 999久久久无码国产精品| 国产精品无需播放器| 中文亚洲AV片在线观看无码| 日韩成人高清不卡av| 91伦理片视频国产精品久久久| 国产免费a∨片在线软件| 麻豆av传媒蜜桃天美传媒| 一区二区三区午夜视频在线观看| 黄色潮片三级三级三级免费| 三年片在线观看免费观看大全中国| 亚洲人成网站18禁止久久影院| 伊人久久大香线蕉在观看| 久久久亚洲日本精品一区| 成人av毛片免费大全| 色欲av伊人久久大香线蕉影院| 亚洲av成人综合网| 成人在线免费视频亚洲|