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

        ?

        Web圖書館管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)

        2014-03-21 02:07:25鄧秋菊
        電腦知識(shí)與技術(shù) 2014年3期
        關(guān)鍵詞:邏輯設(shè)計(jì)

        摘要:數(shù)據(jù)庫設(shè)計(jì)是基于Web的圖書館管理系統(tǒng)開發(fā)的基礎(chǔ)。分析數(shù)據(jù)庫的邏輯設(shè)計(jì),詳細(xì)描述存儲(chǔ)過程的創(chuàng)建,對(duì)圖書館管理系統(tǒng)的開發(fā)有一定借鑒意義。

        關(guān)鍵詞:邏輯設(shè)計(jì);存儲(chǔ)過程;數(shù)據(jù)訪問

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)03-0437-06

        1 數(shù)據(jù)庫設(shè)計(jì)

        1.1數(shù)據(jù)庫邏輯設(shè)計(jì)

        1)用戶表(Users)

        2)圖書表(Book)

        3)圖書借閱表(Borrow)

        4)權(quán)限表(Power)

        1.2 數(shù)據(jù)關(guān)系圖

        為保證數(shù)據(jù)的完整性和有效性,為Borrow數(shù)據(jù)表增加兩個(gè)外鍵關(guān)系,并設(shè)置外鍵關(guān)系對(duì)復(fù)制、插入、更好的強(qiáng)制關(guān)系,而且級(jí)聯(lián)更新和刪除相關(guān)字段。

        2 創(chuàng)建存儲(chǔ)過程

        2.1什么是存儲(chǔ)過程

        存儲(chǔ)過程是利用SQL Server所提供的Tranact-SQL語言所編寫的程序。Tranact-SQL語言是SQL Server提供專為設(shè)計(jì)數(shù)據(jù)庫應(yīng)用程序的語言,它是應(yīng)用程序和SQL Server數(shù)據(jù)庫間的主要程序式設(shè)計(jì)界面。存儲(chǔ)過程只在創(chuàng)造時(shí)進(jìn)行編譯,以后每次執(zhí)行存儲(chǔ)過程都不需再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以使用存儲(chǔ)過程可提高數(shù)據(jù)庫執(zhí)行速度。在本系統(tǒng)中大量使用了存儲(chǔ)過程,實(shí)現(xiàn)對(duì)信息的添加、修改、查詢、刪除等操作,提高了數(shù)據(jù)庫執(zhí)行速度,可以很好地優(yōu)化系統(tǒng)。這類語言主要提供以下功能,讓用戶可以設(shè)計(jì)出符合引用需求的程序:

        1) 變量說明

        2) ANSI兼容的SQL命令(如Select、Update….)

        3) 一般流程控制命令(if…else…、while….)

        4) 內(nèi)部函數(shù)

        其中每個(gè)參數(shù)名前要有一個(gè)“@”符號(hào),每一個(gè)存儲(chǔ)過程的參數(shù)僅為該程序內(nèi)部使用,參數(shù)的類型除了IMAGE外,其他SQL Server所支持的數(shù)據(jù)類型都可使用。

        2.2詳細(xì)存儲(chǔ)過程

        1)Proc_BookAdd

        功能:往Book表中插入新的圖書信息。過程操作面向總圖書管理員。

        CREATE PROCEDURE [Proc_BookAdd]

        (@BookName [varchar](50),

        @BookISBN [varchar](50),

        @BookAuthor [varchar](50),

        …… \\依次插入各字段,此處已省略

        @BookDescription [text])

        AS INSERT INTO [MyLibrary].[dbo].[Book]

        ([BookName],

        [BookISBN],

        [BookAuthor],

        …… \\依次插入各字段,此處已省略

        [BookDescription])

        VALUES

        (@BookName,

        @BookISBN,

        @BookAuthor,

        …… \\依次插入各字段,此處已省略

        @BookDescription)

        GO

        2) Proc_BookDelete

        功能:刪除Book表中指定的圖書信息。過程操作面向總圖書管理員。

        create PROCEDURE [Proc_BookDelete]

        (@BookID [int])

        AS DELETE [MyLibrary].[dbo].[Book]

        WHERE

        ( [BookID] = @BookID)

        GO

        3)Proc_BookList

        功能:查詢Book表中的所有圖書信息,并以書號(hào)排序。過程面向總圖書管理員。

        create PROCEDURE [Proc_BookList]

        AS SELECT *

        FROM [dbo].[Book]

        ORDER BY BookID

        GO

        4)Proc_BookModify

        功能:對(duì)Book表中的某本圖書的信息進(jìn)行修改。過程操作面向總圖書管理員。

        AS UPDATE [MyLibrary].[dbo].[Book]

        SET [BookName] =@BookName,

        [BookISBN] =@BookISBN,

        [BookAuthor] =@BookAuthor,

        …… \\依次輸入各條信息的修改,此處已省略

        [BookDescription] =@BookDescription

        WHERE

        ( [BookID] = @BookID)

        3 數(shù)據(jù)訪問層

        本層只包含一個(gè)類Database,基本都是使用存儲(chǔ)過程來操作數(shù)據(jù)。

        3.1配置數(shù)據(jù)庫連接

        在Web.config文件中指定了數(shù)據(jù)庫連接字符串配置信息,具體實(shí)現(xiàn)為,在Web.config文件中添加如下代碼:

        providerName="System.Data.SqlClient" />

        3.2 DataBase類成員一覽

        DataBase類完成所有的數(shù)據(jù)操作,位于MyLibrary.DataAcceessLayer空間下。其類圖如圖2所示。

        圖2

        DataBase類的成員說明

        [ 屬性/方法\& 功能說明\&Connection\&私有變量,數(shù)據(jù)庫連接SqlConnection對(duì)象\&ConnectionString\&私有變量,數(shù)據(jù)庫連接串\&Open\&打開數(shù)據(jù)庫連接\&Close\&關(guān)閉數(shù)據(jù)庫連接\&Dispose\&釋放數(shù)據(jù)庫連接資源\&GetRecord\&公有方法,根據(jù)Sql語句,返回是否查詢到記錄\&GetRecordCount\&公有方法,返回Sql語句獲得的數(shù)據(jù)值\&AdvancedSearch\&公有方法,根據(jù)XWhere更新數(shù)據(jù)表XTableName中的某些紀(jì)錄\&CreateCommand\&私有方法,獲得一個(gè)用來調(diào)用存儲(chǔ)過程的SqlCommand\&MakeParam\&公有方法,實(shí)例化一個(gè)用于調(diào)用存儲(chǔ)過程的參數(shù)\&MakeInParam\&公有方法,實(shí)例化一個(gè)用于調(diào)用存儲(chǔ)過程的輸入?yún)?shù)\&RunProc\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&RunProc\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&RunProcGetReader\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&RunProcGetReader\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&RunProcGetCount\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&GetDataSet\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&GetDataSet\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&]

        3.3 實(shí)現(xiàn)DataBase類

        下面介紹主要方法的實(shí)現(xiàn):

        1)GetRecord(string XSqlString)方法

        功能:根據(jù)傳遞過來的SQL語句,查詢要查詢的記錄是否存在,如果查詢到,返回真,否則返回假。實(shí)現(xiàn)代碼參考如下:

        //公有方法,根據(jù)Sql語句,返回是否查詢到記錄

        public bool GetRecord(string XSqlString)

        {

        Open();//連接數(shù)據(jù)庫

        SqlDataAdapter adapter = new SqlDataAdapter(XSqlString, Connection);

        //實(shí)例化一個(gè)SQLDataAdapter對(duì)象

        DataSet dataset = new DataSet();//創(chuàng)建一個(gè)數(shù)據(jù)集實(shí)例

        adapter.Fill(dataset);//向數(shù)據(jù)集中填充數(shù)據(jù)

        Close();//關(guān)閉數(shù)據(jù)庫

        if (dataset.Tables[0].Rows.Count > 0)//判斷是否查詢到記錄,如果查詢到返回真,否則返回假

        {

        return true;

        }

        else

        {

        return false;

        }

        2)AdvancedSearch(string XTableName, Hashtable XHT)方法

        AdvancedSearch方法使用一個(gè)哈希表結(jié)構(gòu),從指定的數(shù)據(jù)庫中查詢記錄。方法流程如圖所示:

        圖3

        public DataSet AdvancedSearch(string XTableName, Hashtable XHT)

        {

        int Count = 0;

        string Fields = "";

        foreach(DictionaryEntry Item in XHT)

        {

        if (Count != 0)

        {

        Fields += " and ";

        }

        Fields += Item.Key.ToString(); //模糊查詢

        Fields += " like '%";

        Fields += Item.Value.ToString();

        Fields += "%'";

        Count++;

        }

        Fields += " ";

        string SqlString = "select * from " + XTableName + " where " + Fields;

        Open();

        SqlDataAdapter Adapter = new SqlDataAdapter(SqlString, Connection);

        DataSet Ds = new DataSet();

        Adapter.Fill(Ds);

        Close();

        return Ds;

        }

        3)RunProc方法

        該方法執(zhí)行傳遞過來的存儲(chǔ)過程,執(zhí)行存儲(chǔ)過程時(shí)有需要參數(shù)的情況,也有不需要參數(shù)的情況,所以對(duì)該方法進(jìn)行重載,執(zhí)行存儲(chǔ)過程,返回執(zhí)行結(jié)果。

        public int RunProc(string ProcName)

        {

        int Count = -1;

        SqlCommand Cmd = CreateCommand(ProcName, null);

        Count = Cmd.ExecuteNonQuery();

        Close();

        return Count;

        }

        4)GetDataSet方法

        該方法根基傳遞過來的存儲(chǔ)過程,從數(shù)據(jù)庫中查詢記錄,返回查詢結(jié)果的數(shù)據(jù)庫,傳遞過來的存儲(chǔ)過程也有兩種情況:帶參數(shù)和不帶參數(shù),對(duì)應(yīng)方法有兩種形式。

        public DataSet GetDataSet(string ProcName)

        {

        Open();

        SqlDataAdapter adapter = new SqlDataAdapter(ProcName, Connection);

        DataSet dataset = new DataSet();

        adapter.Fill(dataset);

        Close();

        return dataset;

        }

        參考文獻(xiàn):

        [1] 劉捷,張琳,溫才燚.ASP.NET 2.0+SQL Server動(dòng)態(tài)網(wǎng)站開發(fā)從基礎(chǔ)到實(shí)踐[M].北京:電子工業(yè)出版社,2007.

        [2] 劉亞姝,許小榮,張玉梅.ASP動(dòng)態(tài)網(wǎng)站開發(fā)技術(shù)與實(shí)踐[M].北京:電子工業(yè)出版社,2007.

        providerName="System.Data.SqlClient" />

        3.2 DataBase類成員一覽

        DataBase類完成所有的數(shù)據(jù)操作,位于MyLibrary.DataAcceessLayer空間下。其類圖如圖2所示。

        圖2

        DataBase類的成員說明

        [ 屬性/方法\& 功能說明\&Connection\&私有變量,數(shù)據(jù)庫連接SqlConnection對(duì)象\&ConnectionString\&私有變量,數(shù)據(jù)庫連接串\&Open\&打開數(shù)據(jù)庫連接\&Close\&關(guān)閉數(shù)據(jù)庫連接\&Dispose\&釋放數(shù)據(jù)庫連接資源\&GetRecord\&公有方法,根據(jù)Sql語句,返回是否查詢到記錄\&GetRecordCount\&公有方法,返回Sql語句獲得的數(shù)據(jù)值\&AdvancedSearch\&公有方法,根據(jù)XWhere更新數(shù)據(jù)表XTableName中的某些紀(jì)錄\&CreateCommand\&私有方法,獲得一個(gè)用來調(diào)用存儲(chǔ)過程的SqlCommand\&MakeParam\&公有方法,實(shí)例化一個(gè)用于調(diào)用存儲(chǔ)過程的參數(shù)\&MakeInParam\&公有方法,實(shí)例化一個(gè)用于調(diào)用存儲(chǔ)過程的輸入?yún)?shù)\&RunProc\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&RunProc\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&RunProcGetReader\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&RunProcGetReader\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&RunProcGetCount\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&GetDataSet\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&GetDataSet\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&]

        3.3 實(shí)現(xiàn)DataBase類

        下面介紹主要方法的實(shí)現(xiàn):

        1)GetRecord(string XSqlString)方法

        功能:根據(jù)傳遞過來的SQL語句,查詢要查詢的記錄是否存在,如果查詢到,返回真,否則返回假。實(shí)現(xiàn)代碼參考如下:

        //公有方法,根據(jù)Sql語句,返回是否查詢到記錄

        public bool GetRecord(string XSqlString)

        {

        Open();//連接數(shù)據(jù)庫

        SqlDataAdapter adapter = new SqlDataAdapter(XSqlString, Connection);

        //實(shí)例化一個(gè)SQLDataAdapter對(duì)象

        DataSet dataset = new DataSet();//創(chuàng)建一個(gè)數(shù)據(jù)集實(shí)例

        adapter.Fill(dataset);//向數(shù)據(jù)集中填充數(shù)據(jù)

        Close();//關(guān)閉數(shù)據(jù)庫

        if (dataset.Tables[0].Rows.Count > 0)//判斷是否查詢到記錄,如果查詢到返回真,否則返回假

        {

        return true;

        }

        else

        {

        return false;

        }

        2)AdvancedSearch(string XTableName, Hashtable XHT)方法

        AdvancedSearch方法使用一個(gè)哈希表結(jié)構(gòu),從指定的數(shù)據(jù)庫中查詢記錄。方法流程如圖所示:

        圖3

        public DataSet AdvancedSearch(string XTableName, Hashtable XHT)

        {

        int Count = 0;

        string Fields = "";

        foreach(DictionaryEntry Item in XHT)

        {

        if (Count != 0)

        {

        Fields += " and ";

        }

        Fields += Item.Key.ToString(); //模糊查詢

        Fields += " like '%";

        Fields += Item.Value.ToString();

        Fields += "%'";

        Count++;

        }

        Fields += " ";

        string SqlString = "select * from " + XTableName + " where " + Fields;

        Open();

        SqlDataAdapter Adapter = new SqlDataAdapter(SqlString, Connection);

        DataSet Ds = new DataSet();

        Adapter.Fill(Ds);

        Close();

        return Ds;

        }

        3)RunProc方法

        該方法執(zhí)行傳遞過來的存儲(chǔ)過程,執(zhí)行存儲(chǔ)過程時(shí)有需要參數(shù)的情況,也有不需要參數(shù)的情況,所以對(duì)該方法進(jìn)行重載,執(zhí)行存儲(chǔ)過程,返回執(zhí)行結(jié)果。

        public int RunProc(string ProcName)

        {

        int Count = -1;

        SqlCommand Cmd = CreateCommand(ProcName, null);

        Count = Cmd.ExecuteNonQuery();

        Close();

        return Count;

        }

        4)GetDataSet方法

        該方法根基傳遞過來的存儲(chǔ)過程,從數(shù)據(jù)庫中查詢記錄,返回查詢結(jié)果的數(shù)據(jù)庫,傳遞過來的存儲(chǔ)過程也有兩種情況:帶參數(shù)和不帶參數(shù),對(duì)應(yīng)方法有兩種形式。

        public DataSet GetDataSet(string ProcName)

        {

        Open();

        SqlDataAdapter adapter = new SqlDataAdapter(ProcName, Connection);

        DataSet dataset = new DataSet();

        adapter.Fill(dataset);

        Close();

        return dataset;

        }

        參考文獻(xiàn):

        [1] 劉捷,張琳,溫才燚.ASP.NET 2.0+SQL Server動(dòng)態(tài)網(wǎng)站開發(fā)從基礎(chǔ)到實(shí)踐[M].北京:電子工業(yè)出版社,2007.

        [2] 劉亞姝,許小榮,張玉梅.ASP動(dòng)態(tài)網(wǎng)站開發(fā)技術(shù)與實(shí)踐[M].北京:電子工業(yè)出版社,2007.

        providerName="System.Data.SqlClient" />

        3.2 DataBase類成員一覽

        DataBase類完成所有的數(shù)據(jù)操作,位于MyLibrary.DataAcceessLayer空間下。其類圖如圖2所示。

        圖2

        DataBase類的成員說明

        [ 屬性/方法\& 功能說明\&Connection\&私有變量,數(shù)據(jù)庫連接SqlConnection對(duì)象\&ConnectionString\&私有變量,數(shù)據(jù)庫連接串\&Open\&打開數(shù)據(jù)庫連接\&Close\&關(guān)閉數(shù)據(jù)庫連接\&Dispose\&釋放數(shù)據(jù)庫連接資源\&GetRecord\&公有方法,根據(jù)Sql語句,返回是否查詢到記錄\&GetRecordCount\&公有方法,返回Sql語句獲得的數(shù)據(jù)值\&AdvancedSearch\&公有方法,根據(jù)XWhere更新數(shù)據(jù)表XTableName中的某些紀(jì)錄\&CreateCommand\&私有方法,獲得一個(gè)用來調(diào)用存儲(chǔ)過程的SqlCommand\&MakeParam\&公有方法,實(shí)例化一個(gè)用于調(diào)用存儲(chǔ)過程的參數(shù)\&MakeInParam\&公有方法,實(shí)例化一個(gè)用于調(diào)用存儲(chǔ)過程的輸入?yún)?shù)\&RunProc\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&RunProc\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&RunProcGetReader\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&RunProcGetReader\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&RunProcGetCount\&公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))\&GetDataSet\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&GetDataSet\&公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))\&]

        3.3 實(shí)現(xiàn)DataBase類

        下面介紹主要方法的實(shí)現(xiàn):

        1)GetRecord(string XSqlString)方法

        功能:根據(jù)傳遞過來的SQL語句,查詢要查詢的記錄是否存在,如果查詢到,返回真,否則返回假。實(shí)現(xiàn)代碼參考如下:

        //公有方法,根據(jù)Sql語句,返回是否查詢到記錄

        public bool GetRecord(string XSqlString)

        {

        Open();//連接數(shù)據(jù)庫

        SqlDataAdapter adapter = new SqlDataAdapter(XSqlString, Connection);

        //實(shí)例化一個(gè)SQLDataAdapter對(duì)象

        DataSet dataset = new DataSet();//創(chuàng)建一個(gè)數(shù)據(jù)集實(shí)例

        adapter.Fill(dataset);//向數(shù)據(jù)集中填充數(shù)據(jù)

        Close();//關(guān)閉數(shù)據(jù)庫

        if (dataset.Tables[0].Rows.Count > 0)//判斷是否查詢到記錄,如果查詢到返回真,否則返回假

        {

        return true;

        }

        else

        {

        return false;

        }

        2)AdvancedSearch(string XTableName, Hashtable XHT)方法

        AdvancedSearch方法使用一個(gè)哈希表結(jié)構(gòu),從指定的數(shù)據(jù)庫中查詢記錄。方法流程如圖所示:

        圖3

        public DataSet AdvancedSearch(string XTableName, Hashtable XHT)

        {

        int Count = 0;

        string Fields = "";

        foreach(DictionaryEntry Item in XHT)

        {

        if (Count != 0)

        {

        Fields += " and ";

        }

        Fields += Item.Key.ToString(); //模糊查詢

        Fields += " like '%";

        Fields += Item.Value.ToString();

        Fields += "%'";

        Count++;

        }

        Fields += " ";

        string SqlString = "select * from " + XTableName + " where " + Fields;

        Open();

        SqlDataAdapter Adapter = new SqlDataAdapter(SqlString, Connection);

        DataSet Ds = new DataSet();

        Adapter.Fill(Ds);

        Close();

        return Ds;

        }

        3)RunProc方法

        該方法執(zhí)行傳遞過來的存儲(chǔ)過程,執(zhí)行存儲(chǔ)過程時(shí)有需要參數(shù)的情況,也有不需要參數(shù)的情況,所以對(duì)該方法進(jìn)行重載,執(zhí)行存儲(chǔ)過程,返回執(zhí)行結(jié)果。

        public int RunProc(string ProcName)

        {

        int Count = -1;

        SqlCommand Cmd = CreateCommand(ProcName, null);

        Count = Cmd.ExecuteNonQuery();

        Close();

        return Count;

        }

        4)GetDataSet方法

        該方法根基傳遞過來的存儲(chǔ)過程,從數(shù)據(jù)庫中查詢記錄,返回查詢結(jié)果的數(shù)據(jù)庫,傳遞過來的存儲(chǔ)過程也有兩種情況:帶參數(shù)和不帶參數(shù),對(duì)應(yīng)方法有兩種形式。

        public DataSet GetDataSet(string ProcName)

        {

        Open();

        SqlDataAdapter adapter = new SqlDataAdapter(ProcName, Connection);

        DataSet dataset = new DataSet();

        adapter.Fill(dataset);

        Close();

        return dataset;

        }

        參考文獻(xiàn):

        [1] 劉捷,張琳,溫才燚.ASP.NET 2.0+SQL Server動(dòng)態(tài)網(wǎng)站開發(fā)從基礎(chǔ)到實(shí)踐[M].北京:電子工業(yè)出版社,2007.

        [2] 劉亞姝,許小榮,張玉梅.ASP動(dòng)態(tài)網(wǎng)站開發(fā)技術(shù)與實(shí)踐[M].北京:電子工業(yè)出版社,2007.

        猜你喜歡
        邏輯設(shè)計(jì)
        火電機(jī)組協(xié)調(diào)控制系統(tǒng)前饋控制邏輯設(shè)計(jì)
        兩機(jī)組共用電泵運(yùn)行方式與邏輯設(shè)計(jì)分析
        火電機(jī)組公用電泵系統(tǒng)介紹及邏輯設(shè)計(jì)
        電子制作(2018年12期)2018-08-01 00:47:44
        關(guān)于分離時(shí)序電路的邏輯設(shè)計(jì)關(guān)鍵技術(shù)探討
        核電DCS中長(zhǎng)信號(hào)控制設(shè)備的邏輯設(shè)計(jì)探討
        科技視界(2017年34期)2018-02-05 09:11:17
        民辦高校人事工資管理信息系統(tǒng)分析研究
        數(shù)字電路的邏輯設(shè)計(jì)探究
        提高火力發(fā)電廠熱工保護(hù)可靠性方案與策略探討
        數(shù)據(jù)庫設(shè)計(jì)對(duì)SQL Server數(shù)據(jù)庫性能優(yōu)化分析
        排課系統(tǒng)中數(shù)據(jù)庫表的設(shè)計(jì)
        科技資訊(2015年15期)2015-06-29 17:31:46
        国产黄三级三级三级三级一区二区| 人妻无码aⅴ不卡中文字幕| 亚洲在AV极品无码天堂手机版| 午夜精品久视频在线观看| 国产一区在线视频不卡| 久久aaaa片一区二区| 国产色秀视频在线播放| 午夜视频网址| 国产午夜视频高清在线观看| 欧美日韩在线视频| 大肉大捧一进一出好爽视色大师| 亚洲色欲久久久综合网| 日韩男女av中文字幕| 亚洲最新无码中文字幕久久| 免费无码黄动漫在线观看| 国产精品久久国产三级国电话系列| 亚洲一区二区三区精彩视频| 亚洲国产亚综合在线区| 人与禽交av在线播放| av少妇偷窃癖在线观看| 激情五月六月婷婷俺来也| 午夜dy888国产精品影院| 亚洲精品无码久久久久sm| 一区二区三无码| 中文字幕av永久免费在线| 亚洲人成77777在线播放网站 | 中文字幕人妻中文av不卡专区| 精品无码人妻久久久一区二区三区 | 亚洲第一成人网站| 亚洲av偷拍一区二区三区| 国产一区二区三区仙踪林| 四虎影视免费观看高清视频| 产国语一级特黄aa大片| 最好的99精品色视频大全在线| √天堂资源中文www| 亚洲免费人成在线视频观看| 放荡人妻一区二区三区| 日本熟妇另类一区二区三区| 日本爽快片18禁免费看| 精精国产xxxx视频在线播放器| 亚洲精品国产综合久久|