亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sqlqry.pas

?? 仿sql查詢分析器
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
unit SqlQry;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, ADOInt, Pub, ActiveX, OleDb, Menus;

type
  TSqlQryFrm = class(TForm)
    Pgc1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Splitter1: TSplitter;
    MoSql: TMemo;
    SbxResult: TScrollBox;
    MoMsg: TMemo;
    SBar: TStatusBar;
    PnlMain: TPanel;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    PnlResult: TPanel;
    GridMenu: TPopupMenu;
    MnCopyGridText: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure PnlMainResize(Sender: TObject);
    procedure Splitter1Moved(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure MnCopyGridTextClick(Sender: TObject);
  private
    FConnection: _Connection;

//    FUserName: string;
//    FServer: string;
//    FPassword: string;
//    FAuthType: TAuthType;
    FDatabase: string;

    FFileName: string;        // 當前打開的文件

    FExecuting: Boolean;      // 當前是否在執行SQL?
    FExecThread: TThread;     // 執行的線程.
    FParseOnly: Boolean;      // 僅分析, 不執行.
    FCanceling: Boolean;      // 取消按鈕已經按下.
    FConnClosed: Boolean;     // 連接已經中斷
    
    FServerName: string;
    FSUserName: string;

    FPnlRate: Double;

    function ExecuteSql(const ASql: WideString): Integer;
    function ExecuteRst(const ASql: WideString): _Recordset;

    procedure ClearResults;
    procedure SetDatabase(const Value: string);
    procedure UpdateTitle;
    procedure UpdateDatabase;

    procedure ProcessResults;
    procedure AddMsg(Msg: string);
    procedure AddMsgs(MsgList: TStringList);
    procedure AddRecordsets(DataList: TList);
    procedure ClearVarRef;

    procedure OnThreadTerminate(Sender: TObject);
    procedure OnGridResize(Sender: TObject);

    function GetResultBoxVisible: Boolean;
    function GetConnectionString: string;
  public
//    property Server: string read FServer write FServer;
//    property UserName: string read FUserName write FUserName;
//    property Password: string read FPassword write FPassword;
//    property AuthType: TAuthType read FAuthType write FAuthType;
    property Database: string read FDatabase write SetDatabase;
    property ConnectionString: string read GetConnectionString;

    property ServerName: string read FServerName;
    property SUserName: string read FSUserName;

    // True:當前正在執行SQL
    property Executing: Boolean read FExecuting;

    procedure LoadFile;
    function SaveFile: Boolean;
    function SaveAs: Boolean;

    procedure Initialize(Conn: _Connection);

    procedure Execute;
    procedure ParseSQL;
    procedure CancelExecute;

    procedure ToggleResultBox;
    property ResultBoxVisible: Boolean read GetResultBoxVisible;

    function GetDatabaseList: TStringList;
  end;

var
  SqlQryFrm: TSqlQryFrm;

implementation

uses DataGrid, RowData, Clipbrd, ComObj;

{$R *.dfm}

type
// ADO stdcall interface
  ADOStd = interface;
  ConnectionStd15 = interface;
  CommandStd15 = interface;
  CommandStd = interface;
  RecordsetStd15 = interface;
  RecordsetStd = interface;

  ADOStd = interface(IDispatch)
    ['{00000534-0000-0010-8000-00AA006D2EA4}']
    function Get_Properties(out ppvObject: Properties): HResult; stdcall;
  end;

  ConnectionStd15 = interface(_ADO)
    ['{00000515-0000-0010-8000-00AA006D2EA4}']
    function Get_ConnectionString(out pbstr: WideString): HResult; stdcall;
    function Set_ConnectionString(const pbstr: WideString): HResult; stdcall;
    function Get_CommandTimeout(out plTimeout: Integer): HResult; stdcall;
    function Set_CommandTimeout(plTimeout: Integer): HResult; stdcall;
    function Get_ConnectionTimeout(out plTimeout: Integer): HResult; stdcall;
    function Set_ConnectionTimeout(plTimeout: Integer): HResult; stdcall;
    function Get_Version(out pbstr: WideString): HResult; stdcall;
    function Close: HResult; stdcall;
    function Execute(const CommandText: WideString; out RecordsAffected: OleVariant; 
                     Options: Integer; out ppiRset: _Recordset): HResult; stdcall;
    function BeginTrans(out TransactionLevel: Integer): HResult; stdcall;
    function CommitTrans: HResult; stdcall;
    function RollbackTrans: HResult; stdcall;
    function Open(const ConnectionString: WideString; const UserID: WideString; 
                  const Password: WideString; Options: Integer): HResult; stdcall;
    function Get_Errors(out ppvObject: Errors): HResult; stdcall;
    function Get_DefaultDatabase(out pbstr: WideString): HResult; stdcall;
    function Set_DefaultDatabase(const pbstr: WideString): HResult; stdcall;
    function Get_IsolationLevel(out Level: IsolationLevelEnum): HResult; stdcall;
    function Set_IsolationLevel(Level: IsolationLevelEnum): HResult; stdcall;
    function Get_Attributes(out plAttr: Integer): HResult; stdcall;
    function Set_Attributes(plAttr: Integer): HResult; stdcall;
    function Get_CursorLocation(out plCursorLoc: CursorLocationEnum): HResult; stdcall;
    function Set_CursorLocation(plCursorLoc: CursorLocationEnum): HResult; stdcall;
    function Get_Mode(out plMode: ConnectModeEnum): HResult; stdcall;
    function Set_Mode(plMode: ConnectModeEnum): HResult; stdcall;
    function Get_Provider(out pbstr: WideString): HResult; stdcall;
    function Set_Provider(const pbstr: WideString): HResult; stdcall;
    function Get_State(out plObjState: Integer): HResult; stdcall;
    function OpenSchema(Schema: SchemaEnum; Restrictions: OleVariant; SchemaID: OleVariant; 
                        out pprset: _Recordset): HResult; stdcall;
  end;

  ConnectionStd = interface(ConnectionStd15)
    ['{00000550-0000-0010-8000-00AA006D2EA4}']
    function Cancel: HResult; stdcall;
  end;

  CommandStd15 = interface(ADOStd)
    ['{00000508-0000-0010-8000-00AA006D2EA4}']
    function Get_ActiveConnection(out ppvObject: _Connection): HResult; stdcall;
    function _Set_ActiveConnection(const ppvObject: _Connection): HResult; stdcall;
    function Set_ActiveConnection(ppvObject: OleVariant): HResult; stdcall;
    function Get_CommandText(out pbstr: WideString): HResult; stdcall;
    function Set_CommandText(const pbstr: WideString): HResult; stdcall;
    function Get_CommandTimeout(out pl: Integer): HResult; stdcall;
    function Set_CommandTimeout(pl: Integer): HResult; stdcall;
    function Get_Prepared(out pfPrepared: WordBool): HResult; stdcall;
    function Set_Prepared(pfPrepared: WordBool): HResult; stdcall;
    function Execute(out RecordsAffected: OleVariant; var Parameters: OleVariant; Options: Integer; 
                     out ppiRs: _Recordset): HResult; stdcall;
    function CreateParameter(const Name: WideString; Type_: DataTypeEnum; 
                             Direction: ParameterDirectionEnum; Size: Integer; Value: OleVariant; 
                             out ppiprm: _Parameter): HResult; stdcall;
    function Get_Parameters(out ppvObject: Parameters): HResult; stdcall;
    function Set_CommandType(plCmdType: CommandTypeEnum): HResult; stdcall;
    function Get_CommandType(out plCmdType: CommandTypeEnum): HResult; stdcall;
    function Get_Name(out pbstrName: WideString): HResult; stdcall;
    function Set_Name(const pbstrName: WideString): HResult; stdcall;
  end;

  CommandStd = interface(CommandStd15)
    ['{0000054E-0000-0010-8000-00AA006D2EA4}']
    function Get_State(out plObjState: Integer): HResult; stdcall;
    function Cancel: HResult; stdcall;
  end;

  RecordsetStd15 = interface(ADOStd)
    ['{0000050E-0000-0010-8000-00AA006D2EA4}']
    function Get_AbsolutePosition(out pl: PositionEnum): HResult; stdcall;
    function Set_AbsolutePosition(pl: PositionEnum): HResult; stdcall;
    function _Set_ActiveConnection(const pvar: IDispatch): HResult; stdcall;
    function Set_ActiveConnection(pvar: OleVariant): HResult; stdcall;
    function Get_ActiveConnection(out pvar: OleVariant): HResult; stdcall;
    function Get_BOF(out pb: WordBool): HResult; stdcall;
    function Get_Bookmark(out pvBookmark: OleVariant): HResult; stdcall;
    function Set_Bookmark(pvBookmark: OleVariant): HResult; stdcall;
    function Get_CacheSize(out pl: Integer): HResult; stdcall;
    function Set_CacheSize(pl: Integer): HResult; stdcall;
    function Get_CursorType(out plCursorType: CursorTypeEnum): HResult; stdcall;
    function Set_CursorType(plCursorType: CursorTypeEnum): HResult; stdcall;
    function Get_EOF(out pb: WordBool): HResult; stdcall;
    function Get_Fields(out ppvObject: Fields): HResult; stdcall;
    function Get_LockType(out plLockType: LockTypeEnum): HResult; stdcall;
    function Set_LockType(plLockType: LockTypeEnum): HResult; stdcall;
    function Get_MaxRecords(out plMaxRecords: Integer): HResult; stdcall;
    function Set_MaxRecords(plMaxRecords: Integer): HResult; stdcall;
    function Get_RecordCount(out pl: Integer): HResult; stdcall;
    function _Set_Source(const pvSource: IDispatch): HResult; stdcall;
    function Set_Source(const pvSource: WideString): HResult; stdcall;
    function Get_Source(out pvSource: OleVariant): HResult; stdcall;
    function AddNew(FieldList: OleVariant; Values: OleVariant): HResult; stdcall;
    function CancelUpdate: HResult; stdcall;
    function Close: HResult; stdcall;
    function Delete(AffectRecords: AffectEnum): HResult; stdcall;
    function GetRows(Rows: Integer; Start: OleVariant; Fields: OleVariant; out pvar: OleVariant): HResult; stdcall;
    function Move(NumRecords: Integer; Start: OleVariant): HResult; stdcall;
    function MoveNext: HResult; stdcall;
    function MovePrevious: HResult; stdcall;
    function MoveFirst: HResult; stdcall;
    function MoveLast: HResult; stdcall;
    function Open(Source: OleVariant; ActiveConnection: OleVariant; CursorType: CursorTypeEnum; 
                  LockType: LockTypeEnum; Options: Integer): HResult; stdcall;
    function Requery(Options: Integer): HResult; stdcall;
    function _xResync(AffectRecords: AffectEnum): HResult; stdcall;
    function Update(Fields: OleVariant; Values: OleVariant): HResult; stdcall;
    function Get_AbsolutePage(out pl: PositionEnum): HResult; stdcall;
    function Set_AbsolutePage(pl: PositionEnum): HResult; stdcall;
    function Get_EditMode(out pl: EditModeEnum): HResult; stdcall;
    function Get_Filter(out Criteria: OleVariant): HResult; stdcall;
    function Set_Filter(Criteria: OleVariant): HResult; stdcall;
    function Get_PageCount(out pl: Integer): HResult; stdcall;
    function Get_PageSize(out pl: Integer): HResult; stdcall;
    function Set_PageSize(pl: Integer): HResult; stdcall;
    function Get_Sort(out Criteria: WideString): HResult; stdcall;
    function Set_Sort(const Criteria: WideString): HResult; stdcall;
    function Get_Status(out pl: Integer): HResult; stdcall;
    function Get_State(out plObjState: Integer): HResult; stdcall;
    function _xClone(out ppvObject: _Recordset): HResult; stdcall;
    function UpdateBatch(AffectRecords: AffectEnum): HResult; stdcall;
    function CancelBatch(AffectRecords: AffectEnum): HResult; stdcall;
    function Get_CursorLocation(out plCursorLoc: CursorLocationEnum): HResult; stdcall;
    function Set_CursorLocation(plCursorLoc: CursorLocationEnum): HResult; stdcall;
    function NextRecordset(out RecordsAffected: OleVariant; out ppiRs: _Recordset): HResult; stdcall;
    function Supports(CursorOptions: CursorOptionEnum; out pb: WordBool): HResult; stdcall;
    function Get_Collect(Index: OleVariant; out pvar: OleVariant): HResult; stdcall;
    function Set_Collect(Index: OleVariant; pvar: OleVariant): HResult; stdcall;
    function Get_MarshalOptions(out peMarshal: MarshalOptionsEnum): HResult; stdcall;
    function Set_MarshalOptions(peMarshal: MarshalOptionsEnum): HResult; stdcall;
    function Find(const Criteria: WideString; SkipRecords: Integer; 
                  SearchDirection: SearchDirectionEnum; Start: OleVariant): HResult; stdcall;
  end;

  RecordsetStd = interface(RecordsetStd15)
    ['{0000054F-0000-0010-8000-00AA006D2EA4}']
    function Cancel: HResult; stdcall;
    function Get_DataSource(out ppunkDataSource: IUnknown): HResult; stdcall;
    function _Set_DataSource(const ppunkDataSource: IUnknown): HResult; stdcall;
    function Save(const FileName: WideString; PersistFormat: PersistFormatEnum): HResult; stdcall;
    function Get_ActiveCommand(out ppCmd: IDispatch): HResult; stdcall;
    function Set_StayInSync(pbStayInSync: WordBool): HResult; stdcall;
    function Get_StayInSync(out pbStayInSync: WordBool): HResult; stdcall;
    function GetString(StringFormat: StringFormatEnum; NumRows: Integer; 
                       const ColumnDelimeter: WideString; const RowDelimeter: WideString; 
                       const NullExpr: WideString; out pRetString: WideString): HResult; stdcall;
    function Get_DataMember(out pbstrDataMember: WideString): HResult; stdcall;
    function Set_DataMember(const pbstrDataMember: WideString): HResult; stdcall;
    function CompareBookmarks(Bookmark1: OleVariant; Bookmark2: OleVariant; 
                              out pCompare: CompareEnum): HResult; stdcall;
    function Clone(LockType: LockTypeEnum; out ppvObject: RecordsetStd): HResult; stdcall;
    function Resync(AffectRecords: AffectEnum; ResyncValues: ResyncEnum): HResult; stdcall;
  end;

// SQLServer Error Info for OleDB extendsion
  PSSERRORINFO = ^SSERRORINFO;
  SSERRORINFO = record
    pwszMessage: PWideChar;
    pwszServer: PWideChar;
    pwszProcedure: PWideChar;
    lNative: LongInt;
    bState: Byte;
    bClass: Byte;
    wLineNumber: Word;
  end;

  ISQLServerErrorInfo = interface
  ['{5CF4CA12-EF21-11d0-97E7-00C04FC2AD98}']
    function GetErrorInfo( var ppErrorInfo: PSSERRORINFO;
                          var ppStringsBuffer: Pointer): HResult; stdcall;
  end;

// OleDB interface
  IErrorRecords = interface
  ['{0c733a67-2a1c-11ce-ade5-00aa0044773d}']
    function AddErrorRecord(
                    const pErrorInfo: TErrorInfo;
                    dwLookupID: LongWord;
                    const pdispparams: TDispParams;
                    pUnkCustomError: IUnknown;
                    dwDynamicErrorID: LongWord
                  ): HResult; stdcall;
    function GetBasicErrorInfo(
                    ulRecordNum: LongWord;
                    out pErrorInfo: TErrorInfo
                  ): HResult; stdcall;
    function GetCustomErrorObject(
                    ulRecordNum: LongWord;
                    const riid: TGuid;
                    out ppObject: IUnknown
                  ): HResult; stdcall;
    function GetErrorInfo(
                    ulRecordNum: LongWord;
                    lcid: LCID;
                    out ppErrorInfo: IErrorInfo
                  ): HResult; stdcall;
    function GetErrorParameters(
                    ulRecordNum: LongWord;
                    out pdispparams: TDispParams
                  ): HResult; stdcall;
    function GetRecordCount(var pcRecords: Integer): HResult; stdcall;
  end;

type
  TStringDynArray = array of string;

function SplitSQL(const sql: string): TStringDynArray;
var
  list: TStringList;
  I, J: Integer;
  sqls: TStringDynArray;

  procedure AddSql(L1, L2: Integer);
  var
    OldLen, II: Integer;
    s: string;
  begin            
    for II := L1 to L2 do
      s := s + list[II] + #13#10;
    if Trim(s) <> '' then
    begin
      OldLen := Length(sqls);
      SetLength(sqls, OldLen + 1);
      sqls[OldLen] := s;
    end;
  end;
begin
  SetLength(sqls, 0);

  // 分解SQL語句, 兩個'GO'之間的語句為一個執行單位
  list := TStringList.Create;
  try
    list.Text := sql;
    I := 0;
    J := 0;
    while I < list.Count do
    begin
      if SameText(Trim(list[I]), 'GO') then
      begin
        AddSql(J, I - 1);
        J := I + 1;
      end;
      Inc(I);
    end;
    AddSql(J, I - 1);
  finally
    list.Free;
  end;
  Result := sqls;
end;

// 處理OLE DB錯誤.
// Msg: 錯誤信息字符串
// 返回值: 0 無錯誤
//         1 一般錯誤
//         2 消息性錯誤
//         3 連接斷開
function ProcessResult(var ErrorMsg: string): Integer;
var
  OleErr: IErrorInfo;
  ErrRecords: IErrorRecords;
  SSqlErr: ISQLServerErrorInfo;
  I, RecCnt: Integer;
  hr: HResult;
  InfoMsg, ConnClosed: Boolean;

  // 取得出錯信息.
  // 返回 TRUE: 成功通過ErrInfo取得出錯信息, ErrMsg為出錯信息的字符串.
  //    FALSE: 失敗.
  function GetSSqlErrInfo(ErrInfo: ISQLServerErrorInfo; var ErrMsg: string): Boolean;
  var
    SSErrInfo: PSSERRORINFO;
    pStrBuf: Pointer;
    ProcName: String;
  begin
    Result := False;
    if ErrInfo.GetErrorInfo(SSErrInfo, pStrBuf) = S_OK then
    begin
      // 即使GetErrorInfo返回S_OK, SSErrInfo也可能為nil
      if SSErrInfo = nil then Exit;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色狠狠色综合日日91app| 久久免费看少妇高潮| 亚洲三级视频在线观看| 91在线一区二区三区| 亚洲欧美视频在线观看视频| 欧美中文字幕一区二区三区亚洲| 午夜在线成人av| 欧美白人最猛性xxxxx69交| 国内精品久久久久影院薰衣草| 精品国产欧美一区二区| 国产成人综合精品三级| 中文字幕一区二区三区在线观看| 色综合色综合色综合| 亚洲综合久久久久| 欧美大片拔萝卜| 粗大黑人巨茎大战欧美成人| 国产精品家庭影院| 欧美系列日韩一区| 久久国产免费看| 亚洲人成网站色在线观看| 在线观看一区日韩| 另类小说综合欧美亚洲| 中文字幕一区av| 欧美二区在线观看| 波多野洁衣一区| 日韩激情中文字幕| 欧美国产精品一区| 欧美日韩中文另类| 国产一区二区在线电影| 亚洲综合在线视频| 精品国产伦一区二区三区观看体验 | 99re6这里只有精品视频在线观看| 亚洲欧美影音先锋| 日韩一区二区在线免费观看| 成人永久免费视频| 热久久免费视频| 自拍偷拍国产精品| 精品国产123| 欧美日韩精品免费| 91丨porny丨在线| 经典一区二区三区| 亚洲国产一二三| 欧美激情自拍偷拍| 欧美电视剧在线看免费| 色综合天天综合色综合av| 韩国中文字幕2020精品| 婷婷中文字幕一区三区| 日韩毛片精品高清免费| 久久综合九色综合久久久精品综合| 欧美性大战久久久久久久蜜臀| 国产白丝精品91爽爽久久| 日本亚洲三级在线| 亚洲已满18点击进入久久| 国产欧美精品一区aⅴ影院| 91精品黄色片免费大全| 91久久奴性调教| 成+人+亚洲+综合天堂| 国产一区二区不卡| 精品一区二区三区免费播放 | 久久免费视频色| 欧美高清一级片在线| 91在线一区二区三区| 成人免费视频视频在线观看免费| 免费av成人在线| 日韩精品午夜视频| 亚洲成av人片在www色猫咪| 亚洲男女一区二区三区| 国产精品美女久久久久久久久| 久久久久久一级片| 欧美精品一区二区三区视频| 91精品国产综合久久小美女| 欧美日本国产视频| 欧美日韩在线观看一区二区 | 亚洲毛片av在线| 中文字幕在线观看不卡| 国产精品免费网站在线观看| 久久精品在线免费观看| 国产亚洲午夜高清国产拍精品| 精品国产乱码久久久久久牛牛| 欧美不卡一区二区三区| 久久久天堂av| 国产欧美日韩在线| 国产精品久久久久久久久动漫| 国产精品免费丝袜| 亚洲欧美日韩久久| 亚洲第一久久影院| 日韩电影免费在线看| 美腿丝袜亚洲三区| 国产成人午夜高潮毛片| 懂色av中文字幕一区二区三区| 成人免费av资源| 91国内精品野花午夜精品| 欧美视频一区二区三区四区| 欧美日韩1区2区| 精品福利在线导航| 中文字幕在线不卡一区二区三区| 综合中文字幕亚洲| 午夜精品久久久久久不卡8050| 日本系列欧美系列| 国产一区二区三区综合| 成人高清免费观看| 欧美日韩一区二区电影| 日韩欧美国产三级电影视频| 久久精品无码一区二区三区 | 亚洲免费在线电影| 午夜一区二区三区视频| 麻豆国产欧美一区二区三区| 国产suv精品一区二区三区| 色先锋aa成人| 欧美tickling网站挠脚心| 国产精品天干天干在线综合| 夜夜嗨av一区二区三区网页| 蜜桃一区二区三区在线观看| 成人一区二区三区视频 | 91麻豆国产在线观看| 欧美精品第一页| 日本一区二区三区久久久久久久久不| 国产精品久久精品日日| 日本大胆欧美人术艺术动态| 成人听书哪个软件好| 91精品国产综合久久蜜臀| 中文字幕不卡一区| 丝瓜av网站精品一区二区| 国产91精品在线观看| 欧美日韩免费一区二区三区视频| 久久久不卡网国产精品二区| 亚洲一区二区三区在线播放| 国产九色精品成人porny | 亚洲天堂久久久久久久| 肉色丝袜一区二区| 成人免费毛片aaaaa**| 在线不卡中文字幕| 亚洲欧美偷拍另类a∨色屁股| 国产在线播放一区| 欧美三级韩国三级日本三斤| 久久久久免费观看| 欧美精品一区二区三区在线| 国产欧美日本一区二区三区| 亚洲最大成人网4388xx| 国产一区二区中文字幕| 欧美丝袜丝nylons| 国产精品理论片在线观看| 免费人成在线不卡| 欧洲av在线精品| 亚洲欧美色图小说| 国产精品亚洲午夜一区二区三区 | 99久久99久久久精品齐齐| 日韩免费一区二区三区在线播放| 亚洲精品视频在线| www.亚洲免费av| 国产免费成人在线视频| 成人激情免费网站| 欧美高清一级片在线观看| 黄色小说综合网站| 欧美白人最猛性xxxxx69交| 日韩高清电影一区| 欧美裸体bbwbbwbbw| 亚洲一区二区三区不卡国产欧美 | 国产在线视频不卡二| 91精品国产一区二区三区蜜臀| 亚洲福利视频三区| 欧美日韩国产乱码电影| 亚洲精品免费在线观看| 色网站国产精品| 一区二区视频在线看| 91丨九色丨蝌蚪丨老版| 国产精品天美传媒| 99久久婷婷国产综合精品电影| 中文字幕乱码亚洲精品一区| 粉嫩高潮美女一区二区三区| 久久精品一区蜜桃臀影院| 国产成人精品亚洲日本在线桃色| 久久精品亚洲国产奇米99| 国产98色在线|日韩| 国产精品毛片大码女人| 99久久伊人久久99| 亚洲精品老司机| 欧美性色黄大片| 日韩不卡一区二区三区| 日韩欧美亚洲国产另类| 国产尤物一区二区在线 | 最新久久zyz资源站| 94色蜜桃网一区二区三区| 一区二区在线观看视频在线观看| 91精品福利视频| 日本不卡不码高清免费观看| 欧美变态凌虐bdsm| 成人影视亚洲图片在线| 亚洲一区在线视频观看| 欧美疯狂做受xxxx富婆| 精品一区二区三区香蕉蜜桃| 中文字幕+乱码+中文字幕一区| 97精品国产97久久久久久久久久久久| 亚洲人成精品久久久久| 91精品国产综合久久香蕉的特点| 国模无码大尺度一区二区三区| 中文字幕字幕中文在线中不卡视频| 欧美日韩午夜精品| 国产高清在线精品| 亚洲一区在线看|