亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

Asp.Net 通用數據操作類 (附通用數據基類)第1/2頁

2024-07-10 13:22:07
字體:
來源:轉載
供稿:網友
文章內容為本站編輯,創作.你可以任意轉載、發布、使用但請務必以明文標注文章原始出處及本聲明   作者:浪淘沙
此貼的方法會持續更新, 此文件要引用與數據操作的基類

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace EC
{
    /// <summary>
    /// EB通用與數據交互操作基類
    /// </summary>
    public class EBCommonObj:IDisposable
    {
        private bool _alreadyDispose = false;
        private DBOperate dbo;
        private string sql = null;
        private System.Data.DataSet ds;

        #region 構造與析構函數
        public EBCommonObj()
        {
            dbo = new DBOperate();
        }

        ~EBCommonObj()
        {
            dbo.Dispose();
            Dispose();
        }
        protected virtual void Dispose(bool isDisposing)
        {
            if (_alreadyDispose) return;
            if (isDisposing)
            {
                dbo.Dispose();
            }
            _alreadyDispose = true;
        }
        #endregion

        #region IDisposable 成員
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        #endregion

        #region 通用刪除數據庫中的某條記錄
        /// <summary>
        /// 通用刪除數據庫中的某條記錄
        /// </summary>
        /// <param name="tbl">數據表名</param>
        /// <param name="fld">字段名</param>
        /// <param name="IsInt">是否是int型</param>
        /// <param name="kev">關鍵詞值</param>
        public void CommDelByID(string tbl, string fld, bool IsInt, string key)
        {
            sql = "delete from {0} where {1}=";
            if (IsInt)
            {
                sql += "{3}";
            }
            else
            {
                sql += "'{3}'";
            }
            dbo.ExecuteNonQuery(string.Format(sql, tbl, fld, IsInt, key));

        }

        #endregion

        #region 通用讀取數據庫中的某條記錄
        /// <summary>
        /// 通用讀取數據庫中的某條記錄
        /// </summary>
        /// <param name="tbl"></param>
        /// <param name="fld"></param>
        /// <param name="IsInt"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public DataSet CommReadByID(string tbl,string fld,bool IsInt,string key)
        {
            sql = "select * from {0} where {1}=";
            if (IsInt)
            {
                sql += "{3}";
            }
            else
            {
                sql += "'{3}'";
            }
            ds = dbo.GetDataSet(string.Format(sql, tbl, fld, IsInt, key));

            return ds;        
        }
        #endregion

        #region 修改數據庫中的某條記錄為true 或flase
        /// <summary>
        /// 修改數據庫中的某條記錄為true 或flase
        /// </summary>
        /// <param name="tbl">表格式</param>
        /// <param name="fld">主鍵標識</param>
        /// <param name="Isint">是否整形</param>
        /// <param name="key">主鍵</param>
        /// <param name="flgfld">flase鍵</param>
        /// <param name="flgkey">key值</param>
        public void CommUpdateByID(string tbl,string fld,bool Isint,string key,string flgfld,int flgkey)
        {

            sql = "update {0} set {4}={5} where {1}=";
            if (Isint)
            {
                sql += "{3}";
            }
            else
            {
                sql += "'{3}'";
            }
            dbo.ExecuteNonQuery(string.Format(sql, tbl, fld, Isint, key, flgfld, flgkey));
        }
        #endregion

        #region 綁定DropDown 列表

        /// <summary>
        /// 綁定DropDown 列表
        /// </summary>
        /// <param name="tbl">表名</param>
        /// <param name="selValue">下拉框值</param>
        /// <param name="selText">下拉框顯示內容</param>
        /// <param name="strWhere">where 條件語句 不用加where 沒有條件則為空</param>
        /// <param name="dr">DropDownList控件名稱</param>
        public void DropBind(string tbl, string selValue, string selText, string strWhere,System.Web.UI.WebControls.DropDownList dr)
        {
            ds = GetDrop(tbl, selValue, selText, strWhere);
            dr.DataSource = ds;

            dr.DataTextField = selText;
            dr.DataValueField = selValue;
            dr.DataBind();
            ds.Clear();
            ds.Dispose();
        }

        /// <summary>
        /// 讀取表中數據
        /// </summary>
        /// <param name="tbl"></param>
        /// <param name="selValue"></param>
        /// <param name="selText"></param>
        /// <param name="strWhere">條件</param>
        /// <returns></returns>
        public DataSet GetDrop(string tbl,string selValue,string selText,string strWhere)
        {
            sql = "select {1},{2} from {0} where 1=1 and {3}";
            ds = dbo.GetDataSet(string.Format(sql, tbl, selValue, selText, strWhere));
            return ds;        
        }       

        #endregion

        #region 判斷是否有數據
        /// <summary>
        /// 判斷是否有數據:存在數據時返回true,否則返回Flash
        /// </summary>
        /// <param name="tbl">數據表名</param>
        /// <param name="fld">字段名</param>
        /// <param name="key">關鍵詞</param>
        /// <param name="IsKeyInt">是否是數字類型:是:true;否:false</param>
        /// <returns>true或false</returns>
        public bool IsHaveDate(string tbl,string fld,string key,bool IsKeyInt)
        {
            bool Rev = false;
            if (IsKeyInt)
            {
                sql = "select * from {0} where {1}={2}";
            }
            else
            {
                sql = "select * from {0} where {1}='{2}'";
            }
            ds = dbo.GetDataSet(string.Format(sql, tbl, fld, key));
            if (ds.Tables[0].Rows.Count > 0)
            {
                Rev = true;
            }
            return Rev;
        }

        #endregion
    }
}






/############################################
版權聲明:
文章內容為本站編輯,創作.你可以任意轉載、發布、使用但請務必標明文章原始出處及本聲明
  作者:浪淘沙
############################################/

/**********************************************************************************
 * 
 * 功能說明:數據操作基類,可以執行內聯SQL語句和存儲過程
 * 作者: 劉功勛;
 * 版本:V0.1(C#2.0);時間:2006-4-28
 * 
 * *******************************************************************************/
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace EC
{
    /// <summary>
    /// 數據庫連接及操作對象類
    /// </summary>
    public class DBBase
    {
        private bool _alreadyDispose = false;
        private System.Data.SqlClient.SqlConnection conn;
        private System.Data.SqlClient.SqlCommand com;

        #region 構造與柝構
        public DBBase()
        {
            try
            {
                conn=new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
                conn.Open();
                com = new System.Data.SqlClient.SqlCommand();
                com.Connection = conn;
            }
            catch (Exception ee)
            {
                throw new Exception("連接數據庫出錯");
            }
        }
        ~DBBase()
        {
            Dispose();
        }
        protected virtual void Dispose(bool isDisposing)
        {
            if (_alreadyDispose) return;
            if (isDisposing)
            {
                // TODO: 此處釋放受控資源 
                if (com != null)
                {
                    com.Cancel();
                    com.Dispose();
                }
                if (conn != null)
                {
                    try
                    {
                        conn.Close();
                        conn.Dispose();
                    }
                    catch (Exception ee)
                    {
                    }
                    finally
                    {
                        conn = null;
                    }
                }
            }
            // TODO: 此處釋放非受控資源。設置被處理過標記 
            _alreadyDispose = true;
        }
        #endregion
        #region IDisposable 成員

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        #endregion

        #region 數據基本操作
        /// <summary>
        /// ExecuteNonQuery
        /// </summary>
        /// <param name="sqlString">SQL語句</param>
        /// <returns>返回影響行數</returns>
        public int ExecuteNonQuery(string sqlString)
        {
            int ret = 0;
            com.CommandText = sqlString;
            com.CommandType = CommandType.Text;
            try
            {
                ret = com.ExecuteNonQuery();
            }
            catch (Exception ee)
            {
                throw new Exception("SQL:" + sqlString + "<br />" + ee.Message.ToString());
            }
            finally
            {
                com.Cancel();
            }
            return ret;
        }
        /// <summary>
        /// 執行插入語句返回IDENTITY
        /// </summary>
        /// <param name="sqlString">SQL語句</param>
        /// <returns>@@IDENTITY</returns>
        public int ExecInsert(string sqlString)
        {
            int identity = 0;
            //僅能執行Insert into 語句
            if (!sqlString.ToLower().Contains("insert into"))
            {
                return -1;
            }
            sqlString += " Select @@IDENTITY";
            System.Data.DataSet ds = new DataSet();
            try
            {
                System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(sqlString, conn);
                da.Fill(ds);
                da.Dispose();
            }
            catch (Exception ee)
            {
                throw new Exception("SQL:" + sqlString + "<br />" + ee.Message.ToString());
            }
            if (ds.Tables[0].Rows.Count > 0)
            {
                identity =Convert.ToInt32(ds.Tables[0].Rows[0][0]);
            }
            ds.Clear();
            ds.Dispose();
            return identity;
        }
        /// <summary>
        /// 執行SQL語句返回記錄集
        /// </summary>
        /// <param name="sqlString">SQL語句</param>
        /// <returns>DataSet</returns>
        public DataSet GetDataSet(string sqlString)
        {
            System.Data.DataSet ds = new DataSet();
            try
            {
                System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(sqlString, conn);
                da.Fill(ds);
                da.Dispose();
            }
            catch (Exception ee)
            {
                throw new Exception("SQL:" + sqlString + "<br />" + ee.Message.ToString());
            }
            return ds;
        }
        /// <summary>
        /// 執行存儲過程(返回N種參數)
        /// </summary>
        /// <param name="procName">過程名</param>
        /// <param name="hashtable">傳入的參數表</param>
        /// <param name="hashtable1">傳出的參數表</param>
        /// <returns>返回參數表</returns>

        public System.Collections.Hashtable ExecProcedure(string procName, System.Collections.Hashtable hashtable, System.Collections.Hashtable hashtable1)
        {
            System.Collections.Hashtable hashtable2 = new System.Collections.Hashtable();
            System.Collections.IDictionaryEnumerator ide = hashtable.GetEnumerator();
            System.Collections.IDictionaryEnumerator ide1 = hashtable1.GetEnumerator();

            com.CommandType = CommandType.StoredProcedure;
            com.CommandText = procName;

            while (ide.MoveNext())
            {
                System.Data.SqlClient.SqlParameter p = new System.Data.SqlClient.SqlParameter(ide.Key.ToString(), ide.Value);
                com.Parameters.Add(p);
            }
            while (ide1.MoveNext())
            {
                System.Data.SqlClient.SqlParameter p = new System.Data.SqlClient.SqlParameter(ide1.Key.ToString(), ide.Value);
                com.Parameters.Add(p);
            }

            try
            {
                com.ExecuteNonQuery();
                ide1 = hashtable1.GetEnumerator();
                while (ide1.MoveNext())
                {
                    string k = ide1.Key.ToString();
                    hashtable2.Add(k, com.Parameters[k].Value);
                }
            }
            catch (Exception ee)
            {
                throw new Exception(ee.Message.ToString());
            }
            finally
            {
                com.Cancel();
            }
            return hashtable2;
        }

        /// <summary>
        /// 執行存儲過程(返回記錄集)
        /// </summary>
        /// <param name="procName">過程名</param>
        /// <param name="hashtable">傳入的參數表</param>
        /// <returns>返回記錄集</returns>
        public DataSet ExecProcedure(string procName, System.Collections.Hashtable hashtable)
        {
            System.Data.DataSet ds = new DataSet();
            com.CommandText = procName;
            com.CommandType = CommandType.StoredProcedure;

            System.Collections.IDictionaryEnumerator ide = hashtable.GetEnumerator();

            while (ide.MoveNext())
            {
                System.Data.SqlClient.SqlParameter p = new System.Data.SqlClient.SqlParameter(ide.Key.ToString(), ide.Value);
                com.Parameters.Add(p);
            }
            try
            {
                System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(com);
                da.Fill(ds);
                da.Dispose();
            }
            catch (Exception ee)
            {
                throw new Exception(ee.Message.ToString());
            }
            finally
            {
                com.Cancel();
            }
            return ds;
        }
        #endregion

        #region 數據操作
        /// <summary>
        /// 統計某表記錄總數
        /// </summary>
        /// <param name="KeyField">主鍵/索引鍵</param>
        /// <param name="TableName">數據庫.用戶名.表名</param>
        /// <param name="Condition">查詢條件</param>
        /// <returns>返回記錄總數</returns>
        public int GetRecordCount(string keyField, string tableName, string condition)
        {
            int RecordCount = 0;
            string sql = "select count(" + keyField + ") as count from " + tableName + " " + condition;
            System.Data.DataSet ds = GetDataSet(sql);
            if (ds.Tables[0].Rows.Count > 0)
            {
                RecordCount =Convert.ToInt32(ds.Tables[0].Rows[0][0]);
            }
            ds.Clear();
            ds.Dispose();
            return RecordCount;
        }
        /// <summary>
        /// 統計某表記錄總數
        /// </summary>
        /// <param name="Field">可重復的字段</param>
        /// <param name="tableName">數據庫.用戶名.表名</param>
        /// <param name="condition">查詢條件</param>
        /// <param name="flag">字段是否主鍵</param>
        /// <returns>返回記錄總數</returns>
        public int GetRecordCount(string Field, string tableName, string condition, bool flag)
        {
            int RecordCount = 0;
            if (flag)
            {
                RecordCount = GetRecordCount(Field, tableName, condition);
            }
            else
            {
                string sql = "select count(distinct(" + Field + ")) as count from " + tableName + " " + condition;
                System.Data.DataSet ds = GetDataSet(sql);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    RecordCount = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
                }
                ds.Clear();
                ds.Dispose();
            }
            return RecordCount;
        }
        /// <summary>
        /// 統計某表分頁總數
        /// </summary>
        /// <param name="keyField">主鍵/索引鍵</param>
        /// <param name="tableName">表名</param>
        /// <param name="condition">查詢條件</param>
        /// <param name="pageSize">頁寬</param>
        /// <param name="RecordCount">記錄總數</param>
        /// <returns>返回分頁總數</returns>
        public int GetPageCount(string keyField, string tableName, string condition, int pageSize, int RecordCount)
        {
            int PageCount = 0;
            PageCount = (RecordCount % pageSize) > 0 ? (RecordCount / pageSize) + 1 : RecordCount / pageSize;
            if (PageCount < 1) PageCount = 1;
            return PageCount;
        }
        /// <summary>
        /// 統計某表分頁總數
        /// </summary>
        /// <param name="keyField">主鍵/索引鍵</param>
        /// <param name="tableName">表名</param>
        /// <param name="condition">查詢條件</param>
        /// <param name="pageSize">頁寬</param>
        /// <returns>返回頁面總數</returns>
        public int GetPageCount(string keyField, string tableName, string condition, int pageSize, ref int RecordCount)
        {
            RecordCount = GetRecordCount(keyField, tableName, condition);
            return GetPageCount(keyField, tableName, condition, pageSize, RecordCount);
        }
        /// <summary>
        /// 統計某表分頁總數
        /// </summary>
        /// <param name="Field">可重復的字段</param>
        /// <param name="tableName">表名</param>
        /// <param name="condition">查詢條件</param>
        /// <param name="pageSize">頁寬</param>
        /// <param name="flag">是否主鍵</param>
        /// <returns>返回頁頁總數</returns>
        public int GetPageCount(string Field, string tableName, string condition, ref int RecordCount, int pageSize, bool flag)
        {
            RecordCount = GetRecordCount(Field, tableName, condition, flag);
            return GetPageCount(Field, tableName, condition, pageSize, ref RecordCount);
        }
        #endregion

        #region 分頁函數
         /// <summary>
        /// 構造分頁查詢SQL語句
        /// </summary>
        /// <param name="KeyField">主鍵</param>
        /// <param name="FieldStr">所有需要查詢的字段(field1,field2...)</param>
        /// <param name="TableName">庫名.擁有者.表名</param>
        /// <param name="Condition">查詢條件1(where ...)</param>
        /// <param name="Condition2">查詢條件2(order by ...)</param>
        /// <param name="CurrentPage">當前頁號</param>
        /// <param name="PageSize">頁寬</param>
        /// <returns>SQL語句</returns>
        public static string JoinPageSQL(string KeyField, string FieldStr, string TableName, string Condition, string Condition2, int CurrentPage, int PageSize)
        {
            string sql = null;
            if (CurrentPage == 1)
            {
                sql = "select top " + CurrentPage * PageSize + " " + FieldStr + " from " + TableName + " " + Condition + " " + Condition2 + " ";
            }
            else
            {
                sql = "select * from (";
                sql += "select top " + CurrentPage * PageSize + " " + FieldStr + " from " + TableName + " " + Condition + " " + Condition2 + ") a ";
                sql += "where " + KeyField + " not in (";
                sql += "select top " + (CurrentPage - 1) * PageSize + " " + KeyField + " from " + TableName + " " + Condition + " " + Condition2 + ")";
            }
            return sql;
        }
        /// <summary>
        /// 構造分頁查詢SQL語句
        /// </summary>
        /// <param name="Field">字段名(非主鍵)</param>
        /// <param name="TableName">庫名.擁有者.表名</param>
        /// <param name="Condition">查詢條件1(where ...)</param>
        /// <param name="Condition2">查詢條件2(order by ...)</param>
        /// <param name="CurrentPage">當前頁號</param>
        /// <param name="PageSize">頁寬</param>
        /// <returns>SQL語句</returns>
        public static string JoinPageSQL(string Field, string TableName, string Condition, string Condition2, int CurrentPage, int PageSize)
        {
            string sql = null;
            if (CurrentPage == 1)
            {
                sql = "select top " + CurrentPage * PageSize + " " + Field + " from " + TableName + " " + Condition + " " + Condition2 + " group by " + Field;
            }
            else
            {
                sql = "select * from (";
                sql += "select top " + CurrentPage * PageSize + " " + Field + " from " + TableName + " " + Condition + " " + Condition2 + " group by " + Field + " ) a ";
                sql += "where " + Field + " not in (";
                sql += "select top " + (CurrentPage - 1) * PageSize + " " + Field + " from " + TableName + " " + Condition + " " + Condition2 + " group by " + Field + ")";
            }
            return sql;
        }
        /// <summary>
        /// 頁面分頁顯示功能
        /// </summary>
        /// <param name="Parameters">參數串(a=1&b=2...)</param>
        /// <param name="RecordCount">記錄總數</param>
        /// <param name="PageSize">頁寬</param>
        /// <param name="CurrentPage">當前頁號</param>
        /// <param name="ShowJump">是否顯示跳轉輸入框及按鈕</param>
        /// <param name="Style">樣式(1:上頁下頁...,2:1234...)</param>
        /// <returns></returns>
        public static string Paging(string Parameters, int RecordCount, int PageCount, int PageSize, int CurrentPage, bool ShowJump, int Style)
        {
            string str;
            if (RecordCount <= PageSize) return "";
            if (Parameters != "") Parameters += "&";
            if (CurrentPage < 1) CurrentPage = 1;
            if (CurrentPage > PageCount) CurrentPage = PageCount;

            str = "<table align='center'  width=/"100%/"><tr><td align=/"center/">";

            str += "共 " + RecordCount + " 條記錄 頁次:" + CurrentPage + "http://www.49028c.com/" + PageCount + "頁 ";
            str += PageSize + "條/頁 ";

            if (Style == 1)
            {
                if (CurrentPage == 1)
                    str += "<font color=/"#999999/">首頁 上頁</font> ";
                else
                {
                    str += "<a href='?" + Parameters + "page=1'  class=/"link/">首頁</a> ";
                    str += "<a href='?" + Parameters + "page=" + (CurrentPage - 1) + "'  class=/"link/">上頁</a> "; ;
                }
                if (CurrentPage == PageCount )
                {
                    str += "<font color=/"#999999/">下頁 尾頁</font> ";
                }
                else
                {
                    str += "<a href='?" + Parameters + "page=" + (CurrentPage + 1) + "'  class=/"link/">下頁</a> ";
                    str += "<a href='?" + Parameters + "page=" + PageCount + "'  class=/"link/">尾頁</a>  ";
                }
            }
            else if (Style == 2)
            {
                int NumberSize = 10;
                int PageNumber = (CurrentPage - 1) / NumberSize;

                if (PageNumber * NumberSize > 0)
                    str += "<a href='?" + Parameters + "page=" + PageNumber * NumberSize + "' title=上十頁 >[<<]</a>   ";
                int i;
                for (i = PageNumber * NumberSize + 1; i <= (PageNumber + 1) * NumberSize; i++)
                {
                    if (i == CurrentPage)
                        str += "<strong><font color=#ff0000>[" + i + "]</font></strong> ";
                    else
                        str += "<a href='?" + Parameters + "page=" + i + "'>[" + i + "]</a> ";
                    if (i == PageCount) break;
                }
                if (i < RecordCount) str += "<a href='?" + Parameters + "page=" + i + "' title=下十頁>[>>]</a>  ";
            }
            if (ShowJump)
            {
                str += "";
            }
            str += "</td></tr></table>";
            return str;
        }

        #endregion
    }
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
尤物yw午夜国产精品视频明星| 欧美精品video| 精品国产一区av| 国产一区视频在线播放| 国产一区二区三区网站| 国产一区二区三区在线视频| 国产精品老女人精品视频| 成人黄色在线免费| 亚洲高清免费观看高清完整版| 午夜精品蜜臀一区二区三区免费| 97人洗澡人人免费公开视频碰碰碰| 在线精品国产成人综合| 日本成熟性欧美| 亚洲第一精品夜夜躁人人躁| 国产z一区二区三区| 国产丝袜一区二区三区| 欧美自拍视频在线| 欧美丝袜一区二区| 在线丨暗呦小u女国产精品| 亚洲欧美制服第一页| 亚洲精品国产福利| 91国产视频在线播放| 91av在线国产| 中文字幕日韩精品有码视频| 久久久久久久久综合| 久久久久久网站| 成人美女免费网站视频| 亚洲午夜精品久久久久久性色| 亚洲成人a级网| 欧美老少配视频| 国模极品一区二区三区| 亚洲国产精品久久91精品| 亚洲精品91美女久久久久久久| 国产精品国产三级国产专播精品人| 亚洲综合精品一区二区| 亚洲伊人久久综合| 国产午夜一区二区| 一区二区三区www| 国产va免费精品高清在线| 亚洲第一综合天堂另类专| 欧美丝袜第一区| 久久久黄色av| 精品国产视频在线| 青青草原成人在线视频| 欧美福利视频在线| 日韩中文字幕精品视频| 精品中文字幕在线2019| 色综合久久久久久中文网| 国产精品久久久久久久av电影| 日韩av综合中文字幕| 欧美午夜丰满在线18影院| 精品久久久久人成| 亚洲欧美一区二区三区四区| 亚洲视频国产视频| 91精品视频播放| 欧美老女人性视频| 庆余年2免费日韩剧观看大牛| 欧洲成人午夜免费大片| 91精品在线国产| 色视频www在线播放国产成人| 国内精品久久久| 欧亚精品中文字幕| 国产精品国产三级国产aⅴ9色| 久久影院在线观看| 91精品国产91久久久久久久久| 久久中文精品视频| 久久精品2019中文字幕| 国产精品视频白浆免费视频| 97久久超碰福利国产精品…| 欧美性色视频在线| 97国产精品人人爽人人做| 超碰日本道色综合久久综合| 欧美日韩一区二区免费视频| 国产精品白丝jk喷水视频一区| 国产在线一区二区三区| 久久久精品网站| 欧美性少妇18aaaa视频| 中文字幕亚洲欧美日韩在线不卡| 中文字幕日韩欧美精品在线观看| 国语自产精品视频在线看抢先版图片| 91久久久久久久| 亚洲裸体xxxx| 国产精品自拍偷拍视频| 国产精品久久久久91| 51久久精品夜色国产麻豆| 中文字幕在线视频日韩| 免费成人高清视频| 最好看的2019的中文字幕视频| 国产精品久久久久aaaa九色| 日日噜噜噜夜夜爽亚洲精品| 欧美性猛交xxxx乱大交| 亚洲人成在线免费观看| 国产一区玩具在线观看| 亚洲区中文字幕| 日本亚洲精品在线观看| 国产精品久久久久久久av大片| 日韩欧美大尺度| 午夜精品久久久久久久久久久久| 国产精品视频色| 国内精品一区二区三区四区| 欧美国产精品va在线观看| 欧美日韩亚洲网| 亚洲精品国产精品自产a区红杏吧| 国产成人拍精品视频午夜网站| 成人国产精品久久久| 亚洲精品www| 茄子视频成人在线| 欧美高清视频一区二区| 亚洲精品免费一区二区三区| 午夜美女久久久久爽久久| 国产啪精品视频| 日韩精品电影网| 国产亚洲精品美女久久久久| 日韩av片免费在线观看| 欧美另类在线播放| 欧美限制级电影在线观看| 久久精品一偷一偷国产| 性欧美xxxx视频在线观看| 欧美高清视频一区二区| 亚洲精品电影网| 国产精品亚洲片夜色在线| 成人亚洲综合色就1024| 狠狠久久五月精品中文字幕| 久久成人亚洲精品| 国产91对白在线播放| 日韩av在线免费播放| 91在线观看免费网站| 久久久精品久久久| 午夜精品久久久久久久久久久久| 日韩天堂在线视频| 欧美午夜视频在线观看| 性欧美xxxx交| 国产精品一区久久| 国产精品午夜视频| 在线性视频日韩欧美| 91久久中文字幕| 欧美视频一二三| 在线精品国产成人综合| 九九九热精品免费视频观看网站| 亚洲人成亚洲人成在线观看| 亚洲人成网站在线播| 亚洲专区中文字幕| 国产精品第10页| 色婷婷综合成人| 欧美日韩国产限制| 成人中文字幕+乱码+中文字幕| 亚洲第一男人天堂| 性色av一区二区三区红粉影视| 中文字幕国产亚洲| 久久国产精品影片| 欧美日韩亚洲网| 欧美日韩另类字幕中文| 日韩成人中文字幕在线观看| 亚洲精品动漫100p| 国产日韩欧美日韩大片| 欧美性猛交xxxx| 欧美电影免费在线观看| 91在线观看免费网站| 九九热这里只有精品免费看| 高清欧美电影在线| 国产69精品久久久久9| 成人午夜两性视频| 国产美女搞久久| 一夜七次郎国产精品亚洲|