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

Unity3D教程:與Sqlite數據庫直連

開發 游戲開發
本文將為您介紹Unity 3D如何與Sqlite數據進行連接的過程,操作環境為Windows 7下。

環境介紹:

Windows7,Unity3D,SQLite Expert Personal 3

開發語言:

JavaScript

需要的dll文件:

Mono.Data.Sqlite.dll和sqlite3.dll,dll文件位置,截圖:

Unity3D教程:Unity3D與Sqlite數據庫直連

Unity3D教程:Unity3D與Sqlite數據庫直連

一定要在這個目錄下,請保持一致。

如果需要將編譯好的程序發布成功的話,需要改一些地方,具體見下面的截圖:

Unity3D教程:Unity3D與Sqlite數據庫直連

要改動的地方已用紅色標記,注意這個要改成.NET2.0,這樣才能夠發布的。系統默認的不是.NET2.0,這一點要注意!!!

下面來看下代碼吧,先看下如何創建數據庫的代碼,這一篇代碼是不用掛到任何對象上面去的,你只用把它當成一個工具即可。如下所示:

  1. /*  Javascript class for accessing SQLite objects. 
  2.      To use it, you need to make sure you COPY Mono.Data.SQLiteClient.dll from wherever it lives in your Unity directory 
  3.      to your project's Assets folder 
  4.      Originally created by dklompmaker in 2009 
  5.      http://forum.unity3d.com/threads ... sier-Database-Stuff 
  6.      Modified 2011 by Alan Chatham           */ 
  7. //#pragma strict 
  8. /* 

代碼描述

*本代碼是為了在Windows環境下運行unity3d和Sqlite數據庫而寫的;實現的基本功能是unity3d能夠與數據庫之間進行基本的通信,比如說:在數據庫中的數據被改變了以后,unity3d中得到的數據也會在刷新了之后跟著改變;這只是一個基本的核心的技術,為的是能夠應用在大型的unity3d項目中,能夠存儲場景中的項目的屬性,在需要改變對象的屬性或增加、減少等對象時能夠很方便的用得上。要實現本代碼。首先需要一些dll文件,一個是Mono.Data.SQLiteClient.dll,另外一個是sqlite3.dll,這些文件都能夠在unity3d的安裝目錄中找得到。除此之外,還需要把這兩個文件放在你的項目的這個路徑下面:\Assets\Plugins\,沒有Plugins文件夾就必須創建這個文件夾,然后將這兩個dll文件放在該文件夾寫。當然,如果你想能夠在PC上面發布成可執行文件,還需要改動一些地方。在unity3d中的Play Setting ->Other Setting 中將Api Compatibility的等級改為.NET 2.0;那么這些操作做完了以后,如果你的代碼寫得沒有問題,那么你就可以成功了。

細解釋代碼: 

  1. */ 
  2. import          System.Data;  // we import our  data class 我們先導入我們的數據集 
  3. import          Mono.Data.Sqlite; // we import sqlite        我們導入sqlite數據集,也就是Plugins文件夾下的那個dll文件 
  4. class dbAccess { 
  5.     // variables for basic query access 
  6.     private var connection : String;        //數據庫的連接字符串,用于建立與特定數據源的連接 
  7.     private var dbcon : IDbConnection;        //IDbConnection的連接對象,其實就是一個類對象 
  8.     private var dbcmd : IDbCommand;                //IDbCommand類對象,用來實現操作數據庫的命令:注解:我在網上資料看到的如何實現對數據庫執行命令:                                                  
  9.                     //首先創建一個IDbConnection連接對象,然后將一條數據庫命令賦值給一個字符串,利用這個字符串和連接對象                                                                    
  10.       //就可以創建(new)一個IDbCommand對象了,然后使用提供的方法就可以執行這個命令了。 
  11.     private var reader : IDataReader;        //reader的作用就是讀取結果集的一個或多個只進結果流 
  12.     function OpenDB(p : String){ 
  13.     connection = "URI=file:" + p; // we set the connection to our database 
  14.     dbcon = new SqliteConnection(connection); 
  15.     dbcon.Open();                                                //打開數據庫連接操作 
  16.     } 
  17.     function BasicQuery(q : String, r : boolean){ // run a baic Sqlite query 
  18.         dbcmd = dbcon.CreateCommand(); // create empty command 
  19.         dbcmd.CommandText = q; // fill the command 
  20.         reader = dbcmd.ExecuteReader(); // execute command which returns a reader  返回IDataReader的對象,創建IDataReader的對象 
  21.         if(r){ // if we want to return the reader 
  22.         return reader; // return the reader        返回讀取的對象,就是讀到了什么東西 
  23.         } 
  24.     } 
  25.     // This returns a 2 dimensional ArrayList with all the 
  26.     //  data from the table requested 
  27.     function ReadFullTable(tableName : String){ 
  28.         var query : String; 
  29.         query = "SELECT * FROM " + tableName; 
  30.         dbcmd = dbcon.CreateCommand(); 
  31.         dbcmd.CommandText = query; 
  32.         reader = dbcmd.ExecuteReader(); 
  33.         var readArray = new ArrayList(); 
  34.         while(reader.Read()){ 
  35.             var lineArray = new ArrayList(); 
  36.             for (var i = 0; i < reader.FieldCount; i++) 
  37.                 lineArray.Add(reader.GetValue(i)); // This reads the entries in a row 
  38.             readArray.Add(lineArray); // This makes an array of all the rows 
  39.         } 
  40.         return readArray; // return matches 
  41.     } 
  42.     // This function deletes all the data in the given table.  Forever.  WATCH OUT! Use sparingly, if at all 
  43.     function DeleteTableContents(tableName : String){ 
  44.     var query : String; 
  45.     query = "DELETE FROM " + tableName; 
  46.     dbcmd = dbcon.CreateCommand(); 
  47.     dbcmd.CommandText = query; 
  48.     reader = dbcmd.ExecuteReader(); 
  49.     } 
  50.     function CreateTable(name : String, col : Array, colType : Array){ // Create a table, name, column array, column type array 
  51.         var query : String; 
  52.         query  = "CREATE TABLE " + name + "(" + col[0] + " " + colType[0]; 
  53.         for(var i=1; i<col.length; i++){ 
  54.             query += ", " + col + " " + colType; 
  55.         } 
  56.         query += ")"
  57.         dbcmd = dbcon.CreateCommand(); // create empty command 
  58.         dbcmd.CommandText = query; // fill the command 
  59.         reader = dbcmd.ExecuteReader(); // execute command which returns a reader 
  60.     } 
  61.     function InsertIntoSingle(tableName : String, colName : String, value : String){ // single insert 
  62.         var query : String; 
  63.         query = "INSERT INTO " + tableName + "(" + colName + ") " + "VALUES (" + value + ")"
  64.         dbcmd = dbcon.CreateCommand(); // create empty command 
  65.         dbcmd.CommandText = query; // fill the command 
  66.         reader = dbcmd.ExecuteReader(); // execute command which returns a reader 
  67.     } 
  68.     function InsertIntoSpecific(tableName : String, col : Array, values : Array){ // Specific insert with col and values 
  69.         var query : String; 
  70.         query = "INSERT INTO " + tableName + "(" + col[0]; 
  71.         for(var i=1; i<col.length; i++){ 
  72.             query += ", " + col; 
  73.         } 
  74.         query += ") VALUES (" + values[0]; 
  75.         for(i=1; i<values.length; i++){ 
  76.             query += ", " + values; 
  77.         } 
  78.         query += ")"
  79.         dbcmd = dbcon.CreateCommand(); 
  80.         dbcmd.CommandText = query; 
  81.         reader = dbcmd.ExecuteReader(); 
  82.    } 
  83.     function InsertInto(tableName : String, values : Array){ // basic Insert with just values 
  84.         var query : String; 
  85.         query = "INSERT INTO " + tableName + " VALUES (" + values[0]; 
  86.         for(var i=1; i<values.length; i++){ 
  87.             query += ", " + values; 
  88.         } 
  89.         query += ")"
  90.         dbcmd = dbcon.CreateCommand(); 
  91.         dbcmd.CommandText = query; 
  92.         reader = dbcmd.ExecuteReader(); 
  93.     } 
  94.     // This function reads a single column 
  95.     //  wCol is the WHERE column, wPar is the operator you want to use to compare with, 
  96.     //  and wValue is the value you want to compare against. 
  97.     //  Ex. - SingleSelectWhere("puppies", "breed", "earType", "=", "floppy") 
  98.     //  returns an array of matches from the command: SELECT breed FROM puppies WHERE earType = floppy; 
  99.     function SingleSelectWhere(tableName : String, itemToSelect : String, wCol : String, wPar : String, wValue : String){ // Selects a single Item 
  100.         var query : String; 
  101.         query = "SELECT " + itemToSelect + " FROM " + tableName + " WHERE " + wCol + wPar + wValue;         
  102.         dbcmd = dbcon.CreateCommand(); 
  103.         dbcmd.CommandText = query; 
  104.         reader = dbcmd.ExecuteReader(); 
  105.         var readArray = new Array(); 
  106.         while(reader.Read()){ 
  107.             readArray.Push(reader.GetString(0)); // Fill array with all matches 
  108.         } 
  109.         return readArray; // return matches 
  110.     } 
  111.     function CloseDB(){ 
  112.         reader.Close(); // clean everything up 
  113.         reader = null
  114.         dbcmd.Dispose(); 
  115.         dbcmd = null
  116.         dbcon.Close(); 
  117.         dbcon = null
  118.     } 

7、如何在Unity3D中使用這個數據庫的代碼:

  1. //#pragma strict 
  2. /*  Script for testing out SQLite in Javascript 
  3.           2011 - Alan Chatham 
  4.           Released into the public domain 
  5.         This script is a GUI script - attach it to your main camera. 
  6.  
  7.         It creates/opens a SQLite database, and with the GUI you can read and write to it. 
  8.  
  9.                                         */ 
  10.  
  11. // This is the file path of the database file we want to use 
  12.  
  13. // Right now, it'll load TestDB.sqdb in the project's root folder. 
  14.  
  15. // If one doesn't exist, it will be automatically created. 
  16.  
  17. public var DatabaseName : String = "TestDB.sqdb"
  18.  
  19. // This is the name of the table we want to use 
  20.  
  21. public var TableName : String = "TestTable"
  22.  
  23. var db : dbAccess; 
  24.  
  25. function Start(){ 
  26.  
  27.     // Give ourselves a dbAccess object to work with, and open it 
  28.  
  29.     db = new dbAccess(); 
  30.  
  31.     db.OpenDB(DatabaseName); 
  32.  
  33.     // Let's make sure we've got a table to work with as well! 
  34.  
  35.     var tableName = TableName; 
  36.  
  37.     var columnNames = new Array("firstName","lastName"); 
  38.  
  39.     var columnValues = new Array("text","text"); 
  40.  
  41.     try {db.CreateTable(tableName,columnNames,columnValues); 
  42.  
  43.     } 
  44.  
  45.     catch(e){// Do nothing - our table was already created判斷表是否被創建了 
  46.  
  47.         //- we don't care about the error, we just don't want to see it 
  48.  
  49.     } 
  50.  
  51.  
  52. // These variables just hold info to display in our GUI 
  53.  
  54. var firstName : String = "First Name"
  55.  
  56. var lastName : String = "Last Name"
  57.  
  58. var DatabaseEntryStringWidth = 100; 
  59.  
  60. var scrollPosition : Vector2; 
  61.  
  62. var databaseData : ArrayList = new ArrayList(); 
  63.  
  64. // This GUI provides us with a way to enter data into our database 
  65.  
  66. //  as well as a way to view it 
  67.  
  68. function OnGUI(){ 
  69.  
  70.     GUI.Box(Rect (25,25,Screen.width - 50, Screen.height - 50),"Data"); 
  71.  
  72.     GUILayout.BeginArea(Rect(50, 50, Screen.width - 100, Screen.height - 100)); 
  73.  
  74.     // This first block allows us to enter new entries into our table 
  75.  
  76.         GUILayout.BeginHorizontal(); 
  77.  
  78.             firstName = GUILayout.TextField(firstName, GUILayout.Width (DatabaseEntryStringWidth)); 
  79.  
  80.             lastName = GUILayout.TextField(lastName, GUILayout.Width (DatabaseEntryStringWidth)); 
  81.  
  82.             //lastName = GUILayout.TextField(); 
  83.  
  84.         GUILayout.EndHorizontal(); 
  85.  
  86.         if (GUILayout.Button("Add to database")){ 
  87.  
  88.             // Insert the data 
  89.  
  90.             InsertRow(firstName,lastName); 
  91.  
  92.             // And update the readout of the database 
  93.  
  94.             databaseData = ReadFullTable(); 
  95.  
  96.         } 
  97.  
  98.         // This second block gives us a button that will display/refresh the contents of our database 
  99.  
  100.         GUILayout.BeginHorizontal(); 
  101.  
  102.             if (GUILayout.Button ("Read Database"))         
  103.  
  104.                 databaseData = ReadFullTable(); 
  105.  
  106.             if (GUILayout.Button("Clear")) 
  107.  
  108.                 databaseData.Clear(); 
  109.  
  110.         GUILayout.EndHorizontal(); 
  111.  
  112.         GUILayout.Label("Database Contents"); 
  113.  
  114.         scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Height(100)); 
  115.  
  116.             for (var line : ArrayList in databaseData){ 
  117.  
  118.                 GUILayout.BeginHorizontal(); 
  119.  
  120.                 for (var s in line){ 
  121.  
  122.                     GUILayout.Label(s.ToString(), GUILayout.Width(DatabaseEntryStringWidth)); 
  123.  
  124.                 } 
  125.  
  126.                 GUILayout.EndHorizontal(); 
  127.  
  128.             } 
  129.  
  130.         GUILayout.EndScrollView(); 
  131.  
  132.         if (GUILayout.Button("Delete All Data")){ 
  133.  
  134.  DeleteTableContents(); 
  135.  
  136.             databaseData = ReadFullTable(); 
  137.  
  138.         } 
  139.  
  140.     GUILayout.EndArea(); 
  141.  
  142.  
  143. // Wrapper function for inserting our specific entries into our specific database and table for this file 
  144.  
  145. function InsertRow(firstName, lastName){ 
  146.  
  147.     var values = new Array(("'"+firstName+"'"),("'"+lastName+"'")); 
  148.  
  149.     db.InsertInto(TableName, values); 
  150.  
  151.  
  152. // Wrapper function, so we only mess with our table. 
  153.  
  154. function ReadFullTable(){ 
  155.  
  156.     return db.ReadFullTable(TableName); 
  157.  
  158.  
  159. // Another wrapper function... 
  160.  
  161. function DeleteTableContents(){ 
  162.  
  163.     db.DeleteTableContents(TableName); 
  164.  

 

  運行結果:

Unity3D教程:Unity3D與Sqlite數據庫直連

這是在Unity3D中運行的結果,數據的操作結果如下:

Unity3D教程:Unity3D與Sqlite數據庫直連

我們看見了數據的操作能夠成功,經過測試,其他的Button也都能出現相對應的效果,那我們再看看這個到底有沒有生成我們想要的數據庫文件:

Unity3D教程:Unity3D與Sqlite數據庫直連

 

Unity3D教程:Unity3D與Sqlite數據庫直連

文件當中數據:經測試,我們在對數據庫中的數據進行操作的時候,我們的Unity3D中的數據也會發生相應的改變了!

原文鏈接:http://bbs.9ria.com/forum.php?mod=viewthread&tid=168629&fromuid=308561

 

 

責任編輯:彭凡 來源: 9RIA天地會
相關推薦

2013-04-25 09:56:24

unity3D手機游戲引擎

2013-06-19 08:52:48

Unity3D

2013-06-17 09:12:31

Unity3D

2013-04-25 10:03:07

unity3D手機游戲引擎

2013-06-18 08:49:15

2012-12-24 09:14:31

ios

2013-04-25 13:27:11

unity3D手機游戲引擎

2013-04-25 09:08:39

unity3D手機游戲引擎

2013-04-09 13:42:23

Unity3D基礎知識梳理

2012-12-24 09:20:48

AndoidUnity3D

2012-12-24 09:09:27

AndoidUnity3D

2012-03-06 09:50:24

Android SQLAndroidSQLite3

2013-04-10 14:21:35

2012-12-24 08:52:44

iOSUnity3D

2012-12-24 09:15:57

iOSUnity3D

2018-07-13 09:20:30

SQLite數據庫存儲

2012-12-24 09:08:14

iOSUnity3D

2012-12-24 08:51:23

iOSUnity3D

2012-12-24 08:40:12

2012-12-24 09:11:58

iOSUnity3D
點贊
收藏

51CTO技術棧公眾號

欧美国产激情二区三区| 欧美日韩亚洲三区| 欧美日韩在线直播| 亚洲无玛一区| 国产老女人乱淫免费| 欧美三级视频| 亚洲色图13p| 日韩大片一区二区| av免费在线免费| 国产精品99久久久久久久女警 | 欧美一区二区三区免费视| 自拍偷拍亚洲天堂| 成人在线视频国产| 欧美日韩国产一区二区| 亚洲综合av一区| 少妇又色又爽又黄的视频| 日韩电影免费一区| 久久久久久久久久久免费 | 欧美私人情侣网站| 麻豆视频网站在线观看| 99视频在线精品| 成人久久久久久| 黄色在线免费观看| 欧美777四色影| 国产午夜精品免费一区二区三区| 一级黄色大片免费看| 欧美91看片特黄aaaa| 亚洲人成亚洲人成在线观看图片| 欧美日韩亚洲综合一区二区三区激情在线| 91好色先生tv| 日日夜夜精品视频免费| 欧美激情中文网| 国产一区在线观看免费| 久草成人资源| 亚洲国内精品在线| 91福利国产成人精品播放| 男人天堂视频在线观看| 一区二区三区国产精品| 一区在线电影| 成人在线免费观看| 久久综合国产精品| 黑人巨大精品欧美一区二区小视频| 一级成人免费视频| 日韩电影免费在线看| 奇米4444一区二区三区| 日韩免费不卡视频| 精品91视频| 欧美理论电影在线播放| 日韩激情小视频| 日韩专区精品| 色吧影院999| 成人性生交大片免费看无遮挡aⅴ| 人人精品视频| 亚洲精品国产精品自产a区红杏吧| 日本人dh亚洲人ⅹxx| 亚洲成人av观看| 日本精品一区二区三区四区的功能| 日日摸日日碰夜夜爽无码| 91精品国产91久久久久久青草| 中文字幕在线不卡一区 | 欧美孕妇孕交xxⅹ孕妇交| 不卡一区中文字幕| 国产在线一区二区三区欧美| 人妻妺妺窝人体色www聚色窝| 国产精品一卡二卡| 97人人模人人爽视频一区二区| 国产美女无遮挡永久免费| 免费成人性网站| 国产日韩欧美在线播放| 一级黄色片视频| 狠狠色综合日日| 国产欧美一区二区三区在线看| 在线免费一级片| 久久99精品视频| 1卡2卡3卡精品视频| 精品人妻无码一区二区| 国产99久久久精品| 国内精品**久久毛片app| 四虎在线视频| 欧美激情一区二区三区全黄| 性高潮久久久久久久久| 久久精品视频免费看| 一区二区三区四区在线播放| 国产手机免费视频| 中文字幕高清在线播放| 欧美日韩专区在线| 免费看三级黄色片| 日韩三级av| 最近2019中文免费高清视频观看www99 | 国产精品美女久久久久av爽| 麻豆久久婷婷| 成人免费淫片视频软件| 超碰在线观看99| 26uuu精品一区二区在线观看| 日韩福利在线| 最新黄网在线观看| 日韩欧美国产中文字幕| 制服丝袜中文字幕第一页| 一区二区三区四区精品视频| 亚洲免费电影一区| 永久免费看片直接| 亚洲裸体俱乐部裸体舞表演av| 国产精品爱啪在线线免费观看| 亚洲天堂狠狠干| kk眼镜猥琐国模调教系列一区二区| 欧美极品一区二区| а√中文在线8| 色综合天天天天做夜夜夜夜做| 夜夜夜夜夜夜操| 青草久久视频| 不卡中文字幕av| 国产成人综合欧美精品久久| 国产一区二区三区免费播放| 久久久久久草| 日本孕妇大胆孕交无码| 在线精品亚洲一区二区不卡| av不卡中文字幕| 日韩欧美在线中字| 欧美一级淫片aaaaaaa视频| 91久久精品国产91性色69| 99久久精品免费观看| 国产一区一区三区| 免费在线观看一区| 亚洲精品国产免费| 欧美日韩成人免费观看| 免费观看一级特黄欧美大片| 久久av一区二区| 丝袜中文在线| 这里只有精品电影| 99在线视频免费| 欧美资源在线| 国产一区免费在线观看| av片在线观看永久免费| 欧美日韩亚洲综合一区| 一卡二卡三卡四卡| 一本色道久久综合亚洲精品高清| 亚洲a在线观看| 9i精品一二三区| 色婷婷久久久亚洲一区二区三区| 国产免费a级片| 在线观看日韩| 91情侣偷在线精品国产| 1024视频在线| 欧美日韩国产综合视频在线观看| 久久国产精品影院| 亚洲日韩成人| 国产一区二区不卡视频| 色呦呦在线观看视频| 日韩欧美自拍偷拍| 中文字幕在线2021| 国产精品系列在线观看| 中文字幕久久一区| 欧美日韩卡一| 久久精品国产综合| 国产精品欧美久久久久天天影视| 中文字幕免费不卡在线| 中文字幕网av| 国产精品久久久久久麻豆一区软件| 国产精品偷伦一区二区 | 麻豆精品久久| 欧美另类高清videos| 精品人妻伦一区二区三区久久| 亚洲欧美一区二区三区极速播放| 午夜一级免费视频| 中文精品久久| www.成人av.com| av剧情在线观看| 日韩精品免费在线视频观看| 国产精品美女久久久久av爽| 久久久久久亚洲综合影院红桃| av观看免费在线| 欧美精品乱码| 成人春色激情网| a在线免费观看| 精品国产一区久久| 免费观看成人毛片| 国产亚洲va综合人人澡精品| 五月天av在线播放| 91成人看片| 国产在线精品日韩| 欧美日韩亚洲国产| 日韩视频免费看| 亚洲av无码乱码国产麻豆| 亚洲国产视频一区| 国产免费看av| 国内一区二区视频| 男的插女的下面视频| 久久不见久久见国语| 国产欧美日韩中文字幕在线| 欧美人与牲禽动交com| 日韩精品在线观看一区二区| 特级西西444www高清大视频| 亚洲三级在线播放| 丰满大乳奶做爰ⅹxx视频| 天使萌一区二区三区免费观看| 国产精品夜夜夜爽张柏芝| 成人另类视频| 国产美女精彩久久| 麻豆av在线免费观看| 国产一区二区三区丝袜| 性欧美18一19性猛交| 欧美午夜视频一区二区| 一区二区三区影视| 久久亚洲精品小早川怜子| 91国内在线播放| 中文亚洲免费| 中文字幕av久久| 精品产国自在拍| 97se亚洲综合在线| 九九九伊在线综合永久| 国模精品一区二区三区色天香| 成人在线视频成人| 日韩电影网在线| 亚洲精品久久久蜜桃动漫| 欧美三区免费完整视频在线观看| 91久久国产视频| 亚洲精品美国一| 中国1级黄色片| 久久久不卡网国产精品二区| 蜜臀aⅴ国产精品久久久国产老师| 免费成人在线视频观看| 99热成人精品热久久66| 在线视频观看日韩| 青青草综合视频| 国产精品黑丝在线播放| 奇米精品在线| 天天躁日日躁狠狠躁欧美| 超碰在线97av| 欧美日韩中出| 91免费观看网站| 亚洲免费一区| 国产美女精品视频| 欧美久久久网站| 国产精品美女999| 国产成人免费9x9x人网站视频| 青青青国产精品一区二区| av3级在线| 欧美激情xxxxx| 亚洲资源一区| 久久躁日日躁aaaaxxxx| 日本电影在线观看网站| 日韩中文字幕第一页| av电影在线网| 日韩在线视频免费观看| 日本成a人片在线观看| 正在播放国产一区| 欧美一区三区三区高中清蜜桃| 成人黄色免费视频| 欧美日本精品一区二区三区| 在线免费观看av网址| 亚洲精品乱码久久久久久黑人| 岛国片在线免费观看| 国产精品美女视频| 国产传媒国产传媒| www国产成人| 亚洲黄色小说视频| 久久亚洲捆绑美女| 88久久精品无码一区二区毛片| 久久免费视频色| av中文字幕免费观看| www国产成人| 99久久99久久精品免费| 中文幕一区二区三区久久蜜桃| av女人的天堂| 91在线视频在线| 91黄色免费视频| a在线欧美一区| 日本美女久久久| 国产成人av自拍| 免费不卡的av| fc2成人免费人成在线观看播放| 欧美丰满少妇人妻精品| 久久久久久久免费视频了| 免费黄色在线视频| 国产精品国模大尺度视频| 娇小11一12╳yⅹ╳毛片| 最新久久zyz资源站| 久久精品视频日本| 午夜精品福利久久久| 亚洲精品午夜国产va久久成人| 一区二区三区av电影| 国产在线一二区| 精品日韩中文字幕| 亚洲天堂久久久久| 日韩精品一区二区三区视频在线观看 | 国产精品午夜电影| 糖心vlog免费在线观看| 亚洲成av人影院| 国产精品老女人| 在线视频国内自拍亚洲视频| 国产美女精品视频国产| 亚洲第一区在线| 国产天堂在线| 九九热最新视频//这里只有精品| 伊人网在线播放| 91福利视频网| 国产精品亚洲一区二区在线观看| 爱情岛论坛亚洲入口| 亚洲bt欧美bt精品777| gogogo免费高清日本写真| 激情五月***国产精品| 欧美牲交a欧美牲交| 久草这里只有精品视频| 美国黄色一级视频| 91视频在线观看免费| 日本黄色录像视频| 午夜激情综合网| 波多野结衣家庭主妇| 337p日本欧洲亚洲大胆精品| 六十路在线观看| 久久这里只有精品视频首页| 欧美香蕉视频| 91黄在线观看| 波多野结衣欧美| 一级黄色免费在线观看| 国产亚洲一区在线| www.日本一区| 91污在线观看| 久久久久久久久久久网| 欧美日韩精品一区二区三区蜜桃| 丰满人妻av一区二区三区| 一区二区三区四区精品| 色戒汤唯在线观看| 亚洲一区二区自拍| 国产真实有声精品录音| 亚洲不卡中文字幕无码| 紧缚捆绑精品一区二区| 国产三级国产精品| 亚洲va天堂va国产va久| 国产精品视频a| 亚洲一区二区福利| 亚洲一区站长工具| 成人欧美一区二区| 欧美福利在线| 潘金莲激情呻吟欲求不满视频| 26uuu亚洲| 在线视频一区二区三区四区| 精品毛片乱码1区2区3区| 97电影在线看视频| 国产精品久久久久久超碰| 日韩av黄色在线| 人人妻人人澡人人爽欧美一区| 国内不卡的二区三区中文字幕| 人人爽人人爽人人片| 亚洲成国产人片在线观看| 亚洲精品成av人片天堂无码 | 性做久久久久久免费观看| 超碰在线播放97| 精品国偷自产在线视频99| 日韩在线电影| 亚洲精品永久www嫩草| 天堂资源在线中文精品| 亚洲精品午夜视频| 色94色欧美sute亚洲线路一ni | 国产性猛交xxxx免费看久久| 在线人成日本视频| 亚洲综合在线播放| 欧美日一区二区在线观看| 久久久久无码精品| 亚洲午夜一区二区三区| 成 人 黄 色 片 在线播放| 美女精品久久久| 国产精品99久久免费观看| 免费高清一区二区三区| 国产suv精品一区二区三区| 亚洲综合一二三| 日韩久久免费视频| 无人区在线高清完整免费版 一区二 | 国产一区一区三区| 国产成人丝袜美腿| 久久久久久欧美精品se一二三四| 亚洲国产成人在线播放| 草草视频在线观看| 精品久久久久久中文字幕动漫 | 91精品国产高清久久久久久久久| www.神马久久| 亚洲中文字幕无码专区| 久久久噜噜噜久久人人看| 日韩欧美高清在线观看| 日韩精品免费在线视频观看| 久久久加勒比| 色乱码一区二区三区熟女| 国产综合色精品一区二区三区| 精品99在线观看| 亚洲精品电影久久久| 国产成人77亚洲精品www| 亚洲一区二区精品在线观看| 蜜桃久久久久久久| 美女毛片在线观看| 日韩精品免费综合视频在线播放| 国产精品第一国产精品| 韩国黄色一级大片| www.日本不卡| 在线中文字幕网站| 欧美日韩国产成人高清视频| 亚洲资源网你懂的| 天天操天天干天天做| 亚洲欧美日韩中文字幕一区二区三区| 天天综合永久入口| 国产精品久久国产精品99gif|