精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Silverlight中連接MySQL數據庫實例詳解

開發 后端
在這里我們將討論的是Silverlight中連接MySQL數據庫實例,希望對大家做好WEB開發有所幫助。

本文將重點講述Silverlight中連接MySQL數據庫實例,這在RIA開發中比較基礎,但是也是比較重要的內容。希望通過本文能讓大家對連接MySQL有更深刻的理解。

#T#

在銀光中國網(SilverlightChina.Net)有一篇"Silverlight與常用數據庫互操作系列"文章,其中介紹了使用Silverlight存取不同數據庫的方法和步驟。但是對于Silverlight存取MS SQL介紹的不夠全面,這里我想介紹Silverlight如何通過WCF訪問MSSQL數據庫存儲過程的。希望對大家能夠有所幫助。

我們要實現, 用戶輸入用戶名和密碼后,點擊登錄按鈕,傳遞用戶名和密碼到服務器端, 通過WCF訪問MSSQL數據庫,調用存儲過程,在服務器端對用戶名和密碼進行匹配,匹配成功,則返回登錄成功,否則,則是失敗。

在文章開始前,我們需要做一下準備工作,

開發環境需求: VS2008 SP1, Silverlight 3 Develop Tools for VS2008 SP1, 客戶端Silverlight 3 Runtime, MSSQL 2005 SP3 ;

建立例程數據庫 SilverlightDemo,在數據庫中建立一個新表 Users,包含以下字段;

 建立新表

添加內容到Users表,為了方便起見,密碼全部使用明文,在正式項目中,建議對密碼字段進行加密使用。

 字碼段加密

這里,我們驗證用戶名和密碼,有兩種簡單方式,

一是使用存儲過程讀取用戶名和密碼,然后在服務器端進行用戶名和密碼匹配校驗,如果查找到匹配數據,則返回登錄成功,否則,則是登錄失敗;

二是傳用戶名和密碼到存儲過程中,在數據庫存儲過程中進行判斷,使用Select語句進行查找,對應用戶名和密碼,如果查找到匹配結果,則返回用戶ID, 服務器端接收到用戶ID,則返回登錄成功,否則,則是失敗;

在本例中,主要是對Silverlight訪問數據庫進行講述,所以,對于驗證方法,不進行詳細描述和講解,如果有問題,可以留言給我,我們繼續討論,這里,我將使用第一種驗證方法。 為此,建立一個簡單的存儲過程:

  1. CREATE PROCEDURE [dbo].[Login]  
  2. ( @UserName Varchar(30))  
  3.  AS       
  4.         Select cUserName, cPassword  
  5.         From Users  
  6.         Where cUserName = @UserName   
  7.      RETURN   
  8. SET NOCOUNT ON 

 在完成上面的準備工作后,開始建立新的Silverlight項目,

1. 建立一個新項目"SilverlightDBDemo",

新項目

2. 在MainPage中建立簡單的登錄界面,如下:

登陸界面

3. 在Web項目中添加新選項

Web項目

4. 添加一個簡單的用戶信息類Users,作為WCF的契約成員,當我們從數據庫中讀取信息后,將賦值給該類的契約成員,方便客戶端進行調用;

WCF成員

VS2008將自動生成Users類代碼,在類命名前添加數據契約屬性[DataContract()]。 為了能夠使綁定數據返回修改通知,這里需要繼承INotifyPropertyChanged接口,該步驟不添加對本教程也沒有影響,為了以后例程代碼完整性,這里我繼承了該接口。在接口上點擊右鍵,生成代碼。

Users類代碼

代碼如下:

  1. namespace SilverlightDBDemo.Web  
  2.  {  
  3.      [DataContract()]  
  4.      public class Users : INotifyPropertyChanged  
  5.      {  
  6.    
  7.          #region INotifyPropertyChanged Members  
  8.    
  9.          public event PropertyChangedEventHandler PropertyChanged;   
  10.         #endregion  
  11.     }  
  12. }  

5. 在Users類中,添加契約成員

  1. private string userName;  
  2. [DataMember()]  
  3.  public string UserName  
  4.  {  
  5.      get { return userName; }  
  6.      set { userName = value;}  
  7.  }  
  8.  
  9.  private string password;  
  10. [DataMember()]  
  11. public string Password  
  12. {  
  13.     get { return password;  }  
  14.     set { password = value; }  

6. 建立構造函數 public Users(string sUserName,string sPassword),傳遞用戶名和密碼給契約成員;

  1. using System;  
  2. using System.ComponentModel;  
  3. using System.Runtime.Serialization;  
  4.  
  5. namespace SilverlightDBDemo.Web  
  6. {  
  7.     [DataContract()]  
  8.     public class Users : INotifyPropertyChanged  
  9.     {  
  10.        private string userName;  
  11.        [DataMember()]  
  12.        public string UserName  
  13.        {  
  14.            get { return userName; }  
  15.            set { userName = value;}  
  16.        }  
  17.  
  18.        private string password;  
  19.        [DataMember()]  
  20.        public string Password  
  21.        {  
  22.            get { return password;  }  
  23.            set { password = value; }  
  24.        }  
  25.  
  26.        public Users(string sUserName,string sPassword)  
  27.        {  
  28.            UserName = sUserName;  
  29.            Password = sPassword;  
  30.        }  
  31.  
  32.        #region INotifyPropertyChanged Members  
  33.  
  34.        public event PropertyChangedEventHandler PropertyChanged;  
  35.  
  36.        #endregion  
  37.    }  

7. 添加"Silverlight-enabled WCF Service",修改服務名字為 DBService.svc,需要注意的是,WCF service對于Silverlight僅支持BasicHttpBinding,而VS2008自動生成是customBinding,很多朋友說使用了"Silverlight-enabled WCF Service",鏈接數據庫仍舊失敗,無法找到遠程服務器,是因為沒有使用BasicHttpBinding進行通訊,造成的失敗。

后文我將講述如何修改。

[[7946]]

8. 添加后,在Web服務器端會有DBService.svc和DBService.svc.cs文件出現,VS2008將自動更新Web項目的類庫引用;

WEB服務器上顯示

9. 雙擊進入DBService.svc.cs文件,可以看到以下代碼:

  1. using System;  
  2.  using System.Linq;  
  3.  using System.Runtime.Serialization;  
  4.  using System.ServiceModel;  
  5.  using System.ServiceModel.Activation;  
  6.  using System.Collections.Generic;  
  7.  using System.Text;  
  8.    
  9.  namespace SilverlightDBDemo.Web  
  10. {  
  11.     [ServiceContract(Namespace = "")]  
  12.     [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]  
  13.     public class DBService  
  14.     {  
  15.         [OperationContract]  
  16.         public void DoWork()  
  17.         {  
  18.             // Add your operation implementation here  
  19.            return;  
  20.         }  
  21.  
  22.         // Add more operations here and mark them with [OperationContract]  
  23.     }  

這里我們沒有修改ServiceContract命名空間,所以保持默認為空,AspNet的兼容需求模式我們保持默認。在正式項目中,我們習慣將所有的[OperationContract]函數放入一個接口文件中,這樣方便擴展以及維護,在本例,為了方便大家理解,就不把[OperationContract]放入接口文件。 在VS2008自動生成代碼下面直接添加數據庫訪問代碼。

10. 在添加服務器端數據庫訪問代碼前,需要修改Web.Config文件。和Asp.Net項目一樣,在鏈接數據庫前,我們首先需要在Web.Config中配置數據庫連接字符串,請自行替換數據庫登錄ID和密碼

  1.   <appSettings> 
  2.     <add key="DbServiceConnectionString" value="Data Source=(Local);  
  3. Initial Catalog=SilverlightDemo;  
  4. User Id=dev;Password=dev;"/> 
  5.    </appSettings> 

11. 前文已經說過,Silverlight僅支持使用BasicHttpBinding通過WCF service進行通訊,而VS2008自動生成的代碼是customBinding,所以,我們也需要在Web.Config中進行修改.下面是VS2008自動生成的Web.Config部分代碼,劃線部分是下面要修改的部分。

  1. <system.serviceModel> 
  2.    <behaviors> 
  3.     <serviceBehaviors> 
  4.      <behavior name="SilverlightDBDemo.Web.DBServiceBehavior"> 
  5.       <serviceMetadata httpGetEnabled="true" /> 
  6.       <serviceDebug includeExceptionDetailInFaults="False" /> 
  7.      </behavior> 
  8.     </serviceBehaviors> 
  9.    </behaviors> 
  10.   <bindings> 
  11.    <customBinding> 
  12.     <binding name="customBinding0"> 
  13.      <binaryMessageEncoding /> 
  14.      <httpTransport /> 
  15.     </binding> 
  16.    </customBinding> 
  17.   </bindings> 
  18.   <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
  19.   <services> 
  20.    <service behaviorConfiguration="SilverlightDBDemo.Web.DBServiceBehavior" 
  21.     name="SilverlightDBDemo.Web.DBService"> 
  22.     <endpoint address="" binding="customBinding" bindingConfiguration="customBinding0" 
  23.      contract="SilverlightDBDemo.Web.DBService" /> 
  24.     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
  25.    </service> 
  26.   </services> 
  27. </system.serviceModel> 

-->這里我們需要修改以下幾個地方:

首先刪除customBinding,從上面代碼,第10行,到17行,使用下面代碼替換:

  1.  <bindings> 
  2.    <basicHttpBinding> 
  3.      <binding name="BasicHttpBinding_IDataService" 
  4.          maxBufferPoolSize="2147483647" 
  5.         maxReceivedMessageSize="2147483647" 
  6.          maxBufferSize="2147483647"> 
  7.        <readerQuotas 
  8.            maxArrayLength="2147483647" 
  9.            maxBytesPerRead="2147483647" 
  10.           maxDepth="2147483647" 
  11.           maxNameTableCharCount="2147483647" 
  12.           maxStringContentLength="2147483647" /> 
  13.     </binding> 
  14.   </basicHttpBinding> 
  15. </bindings> 

其中那些2147483647之類的屬性可以刪除,但是如果讀取數據庫中的大型表格,就需要設置緩沖池之類的尺寸了。這里,我們已經使用了basicHttpBinding. Binding name我使用了BasicHttpBinding_DBService,大家可以隨意更換,下面將用到。

然后修改22行和23行的代碼,將endpoint中的binding,內容修改為basicHttpBinding,bindingConfiguration的內容修改為BasicHttpBinding_DBService。

  1. <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_DBService" 
  2.      contract="SilverlightDBDemo.Web.DBService" /> 

12. 現在我們可以在DBService.svc.cs中添加存取數據庫代碼,對用戶名和密碼進行簡單匹配,這里不再著重講述如何條件匹配登錄信息。這里演示了如何調用數據庫存儲過程。完成存取數據庫代碼后,成功編譯Web項目。代碼有點長,這里折疊起來。

  1. private string connectionString = WebConfigurationManager.AppSettings["DbServiceConnectionString"];  
  2.  
  3.         [OperationContract]  
  4.         public bool GetUser(string cUserName, string cPassword)  
  5.         {  
  6.             SqlConnection conn = new SqlConnection(connectionString);  
  7.             SqlCommand cmd = new SqlCommand("Login", conn);  
  8.             cmd.CommandType = CommandType.StoredProcedure;  
  9.             cmd.Parameters.AddWithValue("@UserName", cUserName);  
  10.  
  11.            try 
  12.            {  
  13.                conn.Open();  
  14.                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow);  
  15.                if (reader.Read())  
  16.                {  
  17.                    Users user = new Users((string)reader["cUserName"],  
  18.                        (string)reader["cPassword"]);  
  19.                    if (user.Password == cPassword)  
  20.                    {  
  21.                        return true;  
  22.                    }  
  23.                    else 
  24.                    {  
  25.                        return false;  
  26.                    }  
  27.                }  
  28.                else 
  29.                {  
  30.                    return false;  
  31.                }  
  32.            }  
  33.            finally 
  34.            {  
  35.                conn.Close();  
  36.            }  
  37.        } 

13. 在SilverlightDBDemo客戶端,點擊右鍵添加服務引用

客戶端

14. 在彈出窗口中,點擊"Discover",查找本地WCF service。在地址欄會自動搜索到本地的Service引用,在Services樹形框中我們可以看到,在服務器端建立的DBService.svc,雙擊打開,可以看到,我們建立的GetUser函數,以及默認的DoWork函數。修改下面的命名空間為"DBService",方便調用。

彈出窗口

15. 點擊"Advanced.."高級按鈕,確認選中"Reuse types in referenced assembiles",如下圖,

高級按鈕

16. 然后,點擊確定,會在客戶端中生成DBService服務引用。

 客戶端生成 

17. 在生成DBService服務引用后,VS2008會自動生成一個ServiceReferences.ClientConfig文件。

我們需要留意查看一下該文件內容。其中,bindings信息是basicHttpBinding,而endpoint內容和Web.Config中的內容相同。這里我們不需要修改任何代碼。

  1. <configuration> 
  2.      <system.serviceModel> 
  3.          <bindings> 
  4.              <basicHttpBinding> 
  5.                  <binding name="BasicHttpBinding_DBService" maxBufferSize="2147483647" 
  6.                      maxReceivedMessageSize="2147483647"> 
  7.                      <security mode="None"> 
  8.                          <transport> 
  9.                              <extendedProtectionPolicy policyEnforcement="Never" /> 
  10.                         </transport> 
  11.                     </security> 
  12.                 </binding> 
  13.             </basicHttpBinding> 
  14.         </bindings> 
  15.         <client> 
  16.             <endpoint address="http://localhost/SilverlightDBDemo.Web/DBService.svc" 
  17.                 binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_DBService" 
  18.                 contract="DBService.DBService" name="BasicHttpBinding_DBService" /> 
  19.         </client> 
  20.     </system.serviceModel> 
  21. </configuration> 

18. 下面我們將在客戶端調用該服務引用,獲取數據庫的返回值,根據返回值,我們將簡單判斷登錄是否成功。

進入MainPage.xaml.cs中,建立GetUser方法。該代碼中EndpointAddress是最重要的,出現沒有發現遠程服務器錯誤,和這里設置也有關系。在client_GetUserCompleted中,e.Result代表了數據庫返回值。可以接受任何值,大家可以根據需要進行值類型轉換。每次,用戶點擊登陸按鈕,Silverlight客戶端都會向服務器端請求驗證,返回結果會在提示信息欄顯示。

  1. private void GetUser()  
  2.         {  
  3.             EndpointAddress address = new EndpointAddress(new Uri(Application.Current.Host.Source, "/SilverlightDBDemo.Web/DBService.svc"));  
  4.             DBServiceClient client = new DBServiceClient(new BasicHttpBinding(), address);  
  5.             client.GetUserCompleted += client_GetUserCompleted;  
  6.             client.GetUserAsync(txtUsername.Text, pbPassword.Password);  
  7.         }  
  8.  
  9.         private void client_GetUserCompleted(object sender, GetUserCompletedEventArgs e)  
  10.        {  
  11.            try 
  12.            {  
  13.                if (e.Result)  
  14.                {  
  15.                    tbMessage.Text = "登錄成功!";  
  16.                }  
  17.                else 
  18.                {  
  19.                    tbMessage.Text = "登錄失敗!";  
  20.                }  
  21.            }  
  22.            catch (Exception error)  
  23.            {  
  24.                tbMessage.Text = error.ToString();  
  25.            }  
  26.        }  
  27.  
  28.        private void btLogin_Click(object sender, RoutedEventArgs e)  
  29.        {  
  30.            GetUser();  
  31.        } 
登錄成功如下圖:

[[7947]]

到這里為止,我想你已經學會了如何使用WCF存取MSSQL數據庫了

原文標題:圖文詳解Silverlight訪問MSSQL數據庫

鏈接:http://www.cnblogs.com/jv9/archive/2009/12/30/1635655.html

責任編輯:彭凡 來源: 博客園
相關推薦

2009-09-07 15:25:24

MySQL數據庫互操作Silverlight

2011-07-26 18:11:56

iPhone Sqlite 數據庫

2011-07-05 10:16:16

Qt 數據庫 SQLite

2011-07-05 10:03:00

Qt MYSQL 數據庫

2011-05-19 13:25:14

Oracle數據庫

2010-04-01 09:45:38

NoSQL

2010-11-29 11:47:26

連接Sybase數據庫

2011-06-21 15:11:04

QT 數據庫

2019-09-27 08:55:14

數據庫MySQL服務器

2010-06-01 14:42:55

連接MySQL數據庫

2011-03-29 10:47:49

ORACLE數據庫

2018-07-30 15:00:05

數據庫MySQLJOIN

2009-06-01 09:57:43

netbeans連接數netbeans數據庫netbeans連接m

2011-07-05 09:35:52

Ubuntu Qt Mysql

2020-09-22 15:56:31

Java

2011-05-26 13:42:50

MFC連接MySql數據庫

2024-04-03 00:06:03

2010-03-10 11:29:47

MySQL數據庫性能調

2011-07-05 09:54:04

2011-08-11 16:55:34

Oracle數據庫AWR
點贊
收藏

51CTO技術棧公眾號

久久久久久久一区二区三区| 欧美精品在线一区二区| 精品视频一区二区| 波多野结衣家庭主妇| 97精品视频| 欧美精品一区二区三区高清aⅴ | dy888亚洲精品一区二区三区| 国产精品自产自拍| 欧美中文在线视频| 波兰性xxxxx极品hd| 九九热播视频在线精品6 | 国产乱码精品一区二区| 99热精品在线| 久久久国产影院| 国产福利在线观看视频| 国产999精品在线观看| 色诱视频网站一区| 日本a级片在线播放| 国产一二三在线观看| 国产白丝网站精品污在线入口| 国产精品久久久久久久美男| 日本a在线观看| 天堂美国久久| 亚洲午夜精品久久久久久久久久久久| 男男受被啪到高潮自述| jizzjizz少妇亚洲水多| 欧美午夜激情在线| 免费视频爱爱太爽了| 免费在线观看黄色网| 久久色视频免费观看| 99国产超薄丝袜足j在线观看 | 欧美一级夜夜爽| 一区二区三区视频在线观看免费| 国产美女高潮在线观看| 亚洲六月丁香色婷婷综合久久| 日韩在线导航| 美女欧美视频在线观看免费 | 久久狠狠婷婷| 97视频免费观看| 精品99在线观看| 91tv精品福利国产在线观看| 伊人av综合网| 欧美 日韩 国产 成人 在线观看 | 日韩av网站导航| 国产精品果冻传媒| 亚洲码欧美码一区二区三区| 欧美精品丝袜中出| 91精品无人成人www| 88xx成人永久免费观看| 色噜噜狠狠成人网p站| 国产成人a亚洲精v品无码| 国模私拍一区二区国模曼安| 亚洲高清免费在线| 国产美女主播在线| segui88久久综合| 亚洲午夜在线观看视频在线| 国产av熟女一区二区三区| 婷婷色在线播放| 一个色综合网站| 精品少妇人妻av免费久久洗澡| 日本孕妇大胆孕交无码| 亚洲一区二区三区在线播放| 国产夫妻自拍一区| 成人黄色动漫| 色88888久久久久久影院野外 | 国产一级av毛片| 亚洲国产美女| 欧美亚洲在线视频| 天天干,天天干| 麻豆精品在线观看| 成人午夜两性视频| 亚洲黄色小说网| 波多野结衣一区二区三区| 久久99国产精品99久久| 国产在线播放av| 国产精品福利影院| 日本男女交配视频| 亚洲少妇视频| 欧美日韩一区成人| 丰满少妇一区二区三区专区| 精品淫伦v久久水蜜桃| 亚洲欧美一区二区三区久久| 成人一级片免费看| 午夜亚洲福利| 欧亚精品中文字幕| 97免费观看视频| 不卡一区二区在线| 日韩欧美亚洲日产国| 一区二区三区伦理| 丁香五六月婷婷久久激情| 黑森林精品导航| 一区二区亚洲视频| 亚洲视频在线观看网站| 国产精品九九九九九九| 香蕉国产精品偷在线观看不卡| 国产日韩欧美在线播放| 欧美视频在线观看一区二区三区| 久久久久九九视频| 黄色网zhan| 欧洲亚洲两性| 日韩小视频在线观看专区| 亚洲一区二区观看| 91综合在线| 日韩美女av在线免费观看| 97成人在线观看| www国产成人免费观看视频 深夜成人网| 在线不卡日本| 欧美momandson| 日韩欧美国产麻豆| 久久婷婷五月综合| 一区二区三区国产在线| 91在线观看免费高清| 久久久资源网| 亚欧色一区w666天堂| 中文字幕永久有效| 久久av中文| 久久免费少妇高潮久久精品99| 一二区在线观看| 久久久天堂av| 青草青青在线视频| 99综合99| 最新国产精品亚洲| 日韩黄色片网站| 99久久精品国产一区| 在线观看17c| 日韩成人综合网| 国产午夜精品一区二区三区| 国产无精乱码一区二区三区| 国内国产精品久久| 亚洲韩国在线| 日韩精品三区| 亚洲人成电影网站色…| 国产区在线观看视频| 福利一区二区在线观看| 久久久久亚洲av无码专区喷水| 日韩欧美激情| 色哟哟网站入口亚洲精品| 波多野结衣日韩| 91麻豆6部合集magnet| a级免费在线观看| 超碰cao国产精品一区二区| 日韩一级黄色av| 91精品国产乱码久久久| 亚洲国产高清aⅴ视频| 农村妇女精品一二区| 伊甸园亚洲一区| 欧美在线一区二区视频| 欧美一区二区少妇| 欧美性生活大片免费观看网址| 99久久国产精| 久久久久国产精品午夜一区| 欧美日韩国产综合在线| 日韩精品99| 中文字幕av一区中文字幕天堂| 看黄色一级大片| 国产精品的网站| 天天干天天曰天天操| 欧美视频不卡| 国产伦精品一区二区三毛| 91九色国产在线播放| 亚洲激情在线观看视频免费| 国产网址在线观看| 久久一区二区三区国产精品| 粗暴91大变态调教| 欧美丰满老妇| 成人综合色站| 欧美激情护士| 中文字幕日韩欧美在线视频| 国产精品久久久久久久成人午夜| 亚洲精品国产一区二区精华液| 久久久久国产免费| 久久欧美肥婆一二区| 亚洲v欧美v另类v综合v日韩v| 99精品视频在线免费播放| 欧美激情18p| 毛片在线播放网址| 欧美久久久一区| 欧美日韩中文视频| ww久久中文字幕| 天天看片天天操| 亚洲视频日本| 日韩成人av电影在线| 999精品视频在线观看| 性金发美女69hd大尺寸| 二区在线观看| 欧美成人一区二区| 亚洲成熟少妇视频在线观看| 国产精品久久国产精麻豆99网站| 成人免费播放视频| 亚洲欧美日韩国产一区二区| 亚洲精品一区二区三区av| 亚洲免费一区三区| 国产成人精品一区二区在线| 在线观看的网站你懂的| 亚洲毛茸茸少妇高潮呻吟| 国产一区二区女内射| 精品动漫一区二区| 性色国产成人久久久精品| 99久久综合99久久综合网站| 爱豆国产剧免费观看大全剧苏畅| 伊人成人在线视频| 亚洲国产欧美日韩| 日本国产精品| 97超碰人人看人人 | 五月婷婷六月综合| 久久影院理伦片| 亚洲视频国产精品| 国产精品入口免费视频一| 77thz桃花论族在线观看| 久久九九全国免费精品观看| 嫩草精品影院| 精品国产乱码久久久久久蜜臀| 7777久久亚洲中文字幕| 欧美日韩另类视频| 久久中文字幕无码| 国产精品传媒在线| 人妻少妇无码精品视频区| 成人小视频在线| 午夜影院免费版| 久久精品国产第一区二区三区| 能在线观看的av| 亚洲人体偷拍| 中文精品无码中文字幕无码专区| 欧美gayvideo| 四虎永久在线精品免费一区二区| 男人的天堂久久| 国产66精品久久久久999小说| 伊人久久一区| 国产精品久久久久久久久久| 欧美日韩123区| 欧美一区二区三区……| 91白丝在线| 韩日欧美一区二区| 日本在线视频网址| 欧美日韩国产二区| 欧美寡妇性猛交xxx免费| 精品国产欧美一区二区三区成人| 91大神在线网站| 一本色道久久88亚洲综合88| 好男人免费精品视频| 亚洲欧美中文在线视频| 日本不卡视频一区二区| 精品伊人久久97| 深夜福利视频一区| 精品视频一区在线视频| 天堂中文在线资| 亚洲精品自产拍| 国产视频二区在线观看| 亚洲一区二区久久| 国产高清一区在线观看| 中文字幕日韩精品在线观看| 在线看的av网站| 裸体女人亚洲精品一区| 伦xxxx在线| 美女久久久久久久久久久| 18加网站在线| 午夜精品视频在线| 在线女人免费视频| 国产精品福利观看| 欧洲亚洲精品久久久久| 亚洲专区在线视频| jizz18欧美18| 欧美另类一区| 97精品在线| 欧美高清中文字幕| 国产欧美日韩综合一区在线播放| 欧美 日韩 国产一区| 日本中文一区二区三区| 一区二区久久精品| 国产91精品入口| ass精品国模裸体欣赏pics| 国产欧美日韩在线观看| 欧美风情第一页| 亚洲成人免费在线| 无码人妻丰满熟妇精品区| 欧美色倩网站大全免费| www.看毛片| 精品亚洲永久免费精品| 婷婷在线视频| 久久久最新网址| 成人在线爆射| 91精品天堂| 久操成人av| 精品一区二区三区毛片| 国产精品入口| 国产性生活一级片| 91丝袜国产在线播放| 国产精品精品软件男同| 午夜精品在线看| 97精品人妻一区二区三区| 亚洲成人av在线播放| 成人网视频在线观看| 欧美日韩999| 亚洲成人av观看| 国产精品国模大尺度私拍| 欧美亚洲国产激情| 欧美一区二区视频在线播放| 日韩av网站免费在线| 91精品人妻一区二区三区蜜桃2 | 蜜臀a∨国产成人精品| 日本不卡视频一区| 国产精品久久久久久久久久免费看| 久久精品无码人妻| 欧美日韩高清在线| 香蕉视频成人在线| 欧美精品一二区| 人人鲁人人莫人人爱精品| 操人视频欧美| 亚洲精品网址| 亚洲欧洲日本精品| 91色porny| 久久精品99久久久久久| 欧美猛男gaygay网站| 爽爽视频在线观看| 久久久久久久久久婷婷| 996久久国产精品线观看| 欧美一区免费视频| 亚洲日本国产| 久久黄色一级视频| 中文字幕亚洲一区二区va在线| 色av性av丰满av| 日韩精品黄色网| av成人福利| 高清视频在线观看一区| 亚洲精品在线观看91| 99sesese| 国产精品卡一卡二卡三| 波多野结衣av无码| 国产婷婷成人久久av免费高清| 国产亚av手机在线观看| 亚洲自拍欧美色图| 亚欧美无遮挡hd高清在线视频| 国产主播中文字幕| 国产亚洲精久久久久久| 国产午夜精品久久久久| 精品一区电影国产| 成人片免费看| 久久综合伊人77777麻豆| 亚洲免费大片| 国产高清成人久久| 亚洲不卡一区二区三区| 高h震动喷水双性1v1| 韩国一区二区电影| 久久九九热re6这里有精品| 日韩黄色片在线| 成人h版在线观看| 一级片免费网址| 亚洲精品乱码久久久久久按摩观| 福利影院在线看| 久久av一区二区三区漫画| 国产欧美短视频| 一区二区三区伦理片| 欧美在线一区二区| 日本最新在线视频| 成人网页在线免费观看| 欧美特黄a级高清免费大片a级| 日韩大尺度视频| 亚洲成人黄色影院| 久久久久久青草| 国产精品私拍pans大尺度在线| 欧美成人自拍| 美女被爆操网站| 欧美日韩一区二区三区在线免费观看| 天堂中文字幕在线| 国产精品久久久久久五月尺| 久久一区二区三区电影| 手机在线观看日韩av| 亚洲成人av电影在线| 免费成人av电影| 成人www视频在线观看| 欧美1区免费| 日本xxxx裸体xxxx| 在线欧美小视频| 在线免费观看的av| 激情伦成人综合小说| 日韩不卡一区二区三区| 欧美黄色aaa| 日韩精品黄色网| 国产精品3区| 黄色国产一级视频| 国产精品伦理在线| 亚洲精品一区二区三区新线路 | 少妇精品视频在线观看| 大胆欧美熟妇xx| 国产日韩精品一区二区三区 | 亚洲人成在线观看网站高清| 欧美日韩免费电影| 青青青在线视频播放| 日本一区二区免费在线| 国产小视频一区| 国产美女主播一区| 国产精品久久久一区二区| 懂色av蜜臀av粉嫩av永久| 亚洲激情视频在线观看| 香蕉久久一区| 国产主播在线看| 一区二区久久久久久| 超碰免费在线观看| 国产一区自拍视频| 激情欧美一区二区三区在线观看|