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

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:21:32
字體:
來源:轉載
供稿:網友
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>數據表名</param>
/// <param>字段名</param>
/// <param>是否是int型</param>
/// <param>關鍵詞值</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></param>
/// <param></param>
/// <param></param>
/// <param></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>表格式</param>
/// <param>主鍵標識</param>
/// <param>是否整形</param>
/// <param>主鍵</param>
/// <param>flase鍵</param>
/// <param>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>表名</param>
/// <param>下拉框值</param>
/// <param>下拉框顯示內容</param>
/// <param>where 條件語句 不用加where 沒有條件則為空</param>
/// <param>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></param>
/// <param></param>
/// <param></param>
/// <param>條件</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>數據表名</param>
/// <param>字段名</param>
/// <param>關鍵詞</param>
/// <param>是否是數字類型:是: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>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>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>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>過程名</param>
/// <param>傳入的參數表</param>
/// <param>傳出的參數表</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>過程名</param>
/// <param>傳入的參數表</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>主鍵/索引鍵</param>
/// <param>數據庫.用戶名.表名</param>
/// <param>查詢條件</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>可重復的字段</param>
/// <param>數據庫.用戶名.表名</param>
/// <param>查詢條件</param>
/// <param>字段是否主鍵</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>主鍵/索引鍵</param>
/// <param>表名</param>
/// <param>查詢條件</param>
/// <param>頁寬</param>
/// <param>記錄總數</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>主鍵/索引鍵</param>
/// <param>表名</param>
/// <param>查詢條件</param>
/// <param>頁寬</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>可重復的字段</param>
/// <param>表名</param>
/// <param>查詢條件</param>
/// <param>頁寬</param>
/// <param>是否主鍵</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>主鍵</param>
/// <param>所有需要查詢的字段(field1,field2...)</param>
/// <param>庫名.擁有者.表名</param>
/// <param>查詢條件1(where ...)</param>
/// <param>查詢條件2(order by ...)</param>
/// <param>當前頁號</param>
/// <param>頁寬</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>字段名(非主鍵)</param>
/// <param>庫名.擁有者.表名</param>
/// <param>查詢條件1(where ...)</param>
/// <param>查詢條件2(order by ...)</param>
/// <param>當前頁號</param>
/// <param>頁寬</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>參數串(a=1&b=2...)</param>
/// <param>記錄總數</param>
/// <param>頁寬</param>
/// <param>當前頁號</param>
/// <param>是否顯示跳轉輸入框及按鈕</param>
/// <param>樣式(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 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 + "' + 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
精品视频www| 欧美精品做受xxx性少妇| 欧洲亚洲在线视频| 国产精品第七十二页| 亚洲国产精品va| 中文字幕亚洲字幕| 亚洲精品久久久一区二区三区| 欧美性猛交xxxx乱大交| 久久久免费av| 一区二区亚洲欧洲国产日韩| 久久免费视频在线观看| 色琪琪综合男人的天堂aⅴ视频| 中文字幕久久亚洲| 亚洲人午夜色婷婷| 亚洲国产精品嫩草影院久久| 日韩精品视频中文在线观看| 精品视频久久久久久| 国模精品一区二区三区色天香| 成人伊人精品色xxxx视频| 国产一区欧美二区三区| 久久久久久中文| 一区二区在线免费视频| 日韩a**中文字幕| 亚洲美女动态图120秒| 91在线精品播放| 亚洲精品aⅴ中文字幕乱码| 欧美刺激性大交免费视频| 国产精品美女网站| 久热爱精品视频线路一| 国产精品日日摸夜夜添夜夜av| 色先锋资源久久综合5566| 91亚洲国产成人精品性色| www.久久久久| 亚洲香蕉成人av网站在线观看| 欧美精品免费在线| 成人写真视频福利网| 国产精品久久久久久久天堂| 国产精品1234| 久久香蕉频线观| 日韩在线中文字幕| 国内精品模特av私拍在线观看| 欧美激情精品久久久久久蜜臀| y97精品国产97久久久久久| 久久精品一偷一偷国产| 日韩在线观看免费高清完整版| 精品国产网站地址| 在线观看国产精品淫| 91tv亚洲精品香蕉国产一区7ujn| 欧美精品性视频| 国产成人一区二区三区| 成人久久一区二区| 国产aⅴ夜夜欢一区二区三区| 色婷婷成人综合| 久久伊人色综合| 欧美—级a级欧美特级ar全黄| 在线观看亚洲区| 欧美日韩免费一区| 亚洲国产91精品在线观看| 欧美精品在线观看91| 日本久久91av| 欧美人成在线视频| 91免费福利视频| 亚洲精品白浆高清久久久久久| 亚洲国产古装精品网站| 欧美激情视频一区| 91色在线观看| 国产午夜精品久久久| 久久精品久久久久电影| 亚洲区在线播放| 欧美又大粗又爽又黄大片视频| 国产精品老女人精品视频| 亚洲成人久久电影| 国产成人精品一区二区三区| 欧美亚洲在线播放| 国产精品久久久久91| 亚洲精品福利免费在线观看| 中文字幕日本精品| 国产精国产精品| 国产精品久久久久久久久久新婚| 91成人福利在线| 精品一区二区三区四区在线| 欧美在线日韩在线| 欧美精品情趣视频| 性欧美亚洲xxxx乳在线观看| 伊人久久免费视频| 亚洲视频视频在线| 欧美一级片一区| 免费成人高清视频| 精品人伦一区二区三区蜜桃网站| 欧美极品美女电影一区| 国产精品亚发布| 亚洲国语精品自产拍在线观看| 亚洲a中文字幕| 国产日韩av在线播放| 青草热久免费精品视频| 日韩专区在线播放| 亚洲精品国产精品久久清纯直播| 国产精品黄色影片导航在线观看| 97人人爽人人喊人人模波多| 亚洲福利视频二区| 国产91在线播放九色快色| 久久久国产精品免费| 成人在线免费观看视视频| 国产中文字幕亚洲| 69久久夜色精品国产7777| 日韩欧美亚洲成人| 成人字幕网zmw| 亚洲自拍偷拍一区| 亚洲精品国产美女| 久久99久久久久久久噜噜| 亚洲男人天堂2023| 欧美午夜片欧美片在线观看| 欧美高清理论片| 亚洲91精品在线| 欧美日韩亚洲视频一区| 欧美黄网免费在线观看| 国产精品免费福利| 亚洲a在线观看| 欧美xxxx18性欧美| 欧美一级片久久久久久久| 国产精品偷伦视频免费观看国产| 国产精品三级久久久久久电影| 亚洲成人av资源网| 亚洲韩国欧洲国产日产av| 国产日韩中文字幕| 久久久黄色av| 亚洲国产精久久久久久| 国产精品视频精品视频| 国产精品揄拍一区二区| 亚洲国产精品资源| 国产精品久久久久久久app| 国产福利视频一区二区| 久久久久久91香蕉国产| 亚州欧美日韩中文视频| 欧美在线视频免费| 亚洲自拍偷拍在线| 国产日韩在线看片| 美女视频黄免费的亚洲男人天堂| 国产精品热视频| 国产女人精品视频| 亚洲日韩中文字幕| 日韩天堂在线视频| 国产精品极品尤物在线观看| 另类色图亚洲色图| 日韩电影视频免费| 国产不卡av在线| 中文字幕欧美日韩精品| 亚洲色图校园春色| 久久久久久久一区二区三区| 国产欧美一区二区三区久久人妖| 日韩视频在线观看免费| 国产一区二区三区免费视频| 日韩一级裸体免费视频| 久久久久免费精品国产| 国产91精品高潮白浆喷水| 亚洲视频网站在线观看| 日本精品久久久久影院| 青草青草久热精品视频在线网站| 国产精品人人做人人爽| 欧美在线视频免费播放| 国产精品视频久| 日韩中文字幕在线视频播放| 欧美性色视频在线| 精品夜色国产国偷在线|