• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Asp.Net 數據操作類(附通用數據基類)

    來源:懂視網 責編:小采 時間:2020-11-27 22:44:50
    文檔

    Asp.Net 數據操作類(附通用數據基類)

    Asp.Net 數據操作類(附通用數據基類):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; name
    推薦度:
    導讀Asp.Net 數據操作類(附通用數據基類):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; name

    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
    }
    }

    /############################################
    版權聲明:
    文章內容為本站編輯,創作.你可以任意轉載、發布、使用但請務必標明文章原始出處及本聲明
    http://www.opent.cn 作者:浪淘沙
    ############################################/
    /**********************************************************************************
    *
    * 功能說明:數據操作基類,可以執行內聯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 + "/" + 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
    }
    }

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Asp.Net 數據操作類(附通用數據基類)

    Asp.Net 數據操作類(附通用數據基類):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; name
    推薦度:
    標簽: 數據 通用 net
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 97久久精品午夜一区二区| 成人午夜精品网站在线观看 | 91精品国产品国语在线不卡| 中文字幕精品无码一区二区三区| 精品一区二区三区在线视频| 亚洲国产另类久久久精品| 精品99又大又爽又硬少妇毛片| 国产成人精品免费视 | 精品第一国产综合精品蜜芽| 国产成人精品日本亚洲11| 亚洲欧美日韩国产精品专区| 久久久久久一区国产精品| 国产成人综合久久精品尤物| 国产精品国产三级专区第1集 | 在线精品亚洲一区二区| 精品久久久久久国产免费了| 亚洲国产精品人久久| 成人精品视频一区二区三区 | 精品国产一区二区三区在线观看| 四虎影永久在线观看精品| 91精品国产高清久久久久久io | 日韩精品久久久肉伦网站| 亚洲精品97久久中文字幕无码| 精品精品国产国产| 国产精品自产拍在线18禁| 99国产精品国产免费观看| 亚洲精品一二区| 四虎影视884a精品国产四虎| 精品国产91久久久久久久| 国产精品久久波多野结衣| 精品国产一区二区三区不卡| 久久久久亚洲精品无码蜜桃| 亚洲爆乳精品无码一区二区三区| 四虎国产精品永久在线看| 久热精品视频第一页| 精品无码国产污污污免费网站国产 | 2020久久精品国产免费| 欧美日韩精品久久久久| 久久精品国产亚洲AV香蕉| 三上悠亚久久精品| 无码日韩精品一区二区免费暖暖|