亚洲欧美第一页_禁久久精品乱码_粉嫩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;      // 當前是否在執(zhí)行SQL?
    FExecThread: TThread;     // 執(zhí)行的線程.
    FParseOnly: Boolean;      // 僅分析, 不執(zhí)行.
    FCanceling: Boolean;      // 取消按鈕已經(jīng)按下.
    FConnClosed: Boolean;     // 連接已經(jīng)中斷
    
    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:當前正在執(zhí)行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'之間的語句為一個執(zhí)行單位
  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一区二区三区免费野_久草精品视频
欧美极品xxx| 免费成人在线观看| 国产成人av在线影院| 日韩一区二区三区三四区视频在线观看| 亚洲精品伦理在线| 色综合久久88色综合天天| 国产精品久久久久aaaa| 99久久久久久99| 欧美专区日韩专区| 亚洲激情一二三区| 国产成人午夜高潮毛片| 久久婷婷国产综合国色天香| 精品无人码麻豆乱码1区2区| 久久先锋影音av| 国产成人精品亚洲午夜麻豆| 欧美国产日本韩| 成人动漫一区二区在线| 亚洲天堂福利av| 色综合久久中文综合久久97| 亚洲少妇30p| 欧美日韩你懂得| 亚洲日穴在线视频| 色综合久久综合网欧美综合网 | 高清国产一区二区| 国产丝袜美腿一区二区三区| 国产精品一区免费视频| 国产精品情趣视频| 欧美综合一区二区三区| 亚洲午夜精品网| 在线不卡中文字幕播放| 午夜精品福利一区二区蜜股av| 欧美一区二区三区啪啪| 国产露脸91国语对白| 日韩码欧中文字| 91精品国产综合久久久久久 | 99久久99久久免费精品蜜臀| 亚洲精品大片www| 日本伦理一区二区| 青青草国产精品97视觉盛宴| 国产亚洲一二三区| 国产**成人网毛片九色 | 精品一区二区av| 久久久久国产精品人| 一本久久精品一区二区| 日韩不卡一区二区三区| 国产精品久久久久久福利一牛影视 | 国产午夜亚洲精品羞羞网站| 欧美色成人综合| 丁香婷婷综合色啪| 日本欧美一区二区在线观看| 精品国产伦一区二区三区免费| 97超碰欧美中文字幕| 亚洲男人的天堂在线aⅴ视频| 欧美二区乱c少妇| 91丨porny丨中文| 午夜久久电影网| 国产精品国产自产拍在线| 欧美日韩国产三级| 国产成人免费在线视频| 亚洲午夜免费电影| 国产拍欧美日韩视频二区| 884aa四虎影成人精品一区| 国产精品夜夜爽| 奇米888四色在线精品| 亚洲丝袜制服诱惑| 欧美三级在线看| 麻豆成人久久精品二区三区红| 亚洲人成网站在线| 国产农村妇女毛片精品久久麻豆| 丝袜国产日韩另类美女| 中文字幕一区二区三中文字幕| 日韩你懂的电影在线观看| 欧美性猛片aaaaaaa做受| 99久久99久久久精品齐齐| 国内精品免费在线观看| 欧美国产日韩亚洲一区| 99久久精品国产一区二区三区| 视频在线观看国产精品| 亚洲欧美激情在线| 日本一区二区久久| 2022国产精品视频| 欧美mv日韩mv| 日韩欧美电影在线| 欧美三级三级三级爽爽爽| 国产精品538一区二区在线| 香蕉成人伊视频在线观看| 国产精品视频线看| 久久精品视频在线免费观看| 日韩女优视频免费观看| 日韩一卡二卡三卡国产欧美| 欧美日韩一区成人| 欧美日本在线视频| 欧洲精品在线观看| 男男成人高潮片免费网站| 午夜精品123| 日本vs亚洲vs韩国一区三区二区 | 欧美综合久久久| 欧美日韩在线播放| 欧美日韩精品系列| 欧美精品乱人伦久久久久久| 欧美美女黄视频| 日韩一区二区三区在线| 波多野结衣一区二区三区 | 国产a久久麻豆| 99视频一区二区| 在线视频你懂得一区二区三区| 国产不卡视频在线观看| 97久久超碰国产精品| 在线免费av一区| 欧美人妇做爰xxxⅹ性高电影| 欧美视频一区在线| 激情另类小说区图片区视频区| 国产一区视频在线看| 国产aⅴ综合色| 在线观看亚洲a| 日韩视频一区二区三区| 久久精品亚洲精品国产欧美kt∨| 中文字幕成人网| 精品精品国产高清一毛片一天堂| 久久精品人人做人人综合| 中日韩免费视频中文字幕| 亚洲欧洲av一区二区三区久久| 亚洲一二三区在线观看| 蜜臀av性久久久久蜜臀av麻豆| 日韩极品在线观看| 国产制服丝袜一区| 99久久99久久精品免费观看| 一本色道**综合亚洲精品蜜桃冫| 8v天堂国产在线一区二区| 国产日韩欧美不卡在线| 中文字幕不卡的av| 一区精品在线播放| 国产精品电影一区二区| 午夜精品成人在线| 丰满白嫩尤物一区二区| 欧美色欧美亚洲另类二区| 日韩欧美国产三级电影视频| 欧美午夜一区二区| 五月天激情小说综合| 狠狠色综合播放一区二区| 精品av综合导航| 亚洲情趣在线观看| 激情六月婷婷综合| 国产精品77777| 制服丝袜亚洲播放| 亚洲综合免费观看高清完整版| 亚洲五码中文字幕| 韩国午夜理伦三级不卡影院| bt欧美亚洲午夜电影天堂| 91麻豆精品国产无毒不卡在线观看| 亚洲天堂免费看| 久久这里只有精品首页| 亚洲成人在线免费| 97久久超碰精品国产| 粉嫩一区二区三区在线看| 亚洲精品在线电影| 久久成人免费电影| 欧美电影在线免费观看| 亚洲成人资源网| 欧美日韩一区成人| 亚洲国产视频在线| 欧美日韩一本到| 丝袜美腿亚洲综合| 欧美一区二区日韩| 日韩国产高清影视| 日韩免费一区二区| 国产在线精品一区在线观看麻豆| 91精品国产全国免费观看| 日本一不卡视频| 欧美一级日韩免费不卡| 青青草原综合久久大伊人精品| 91精品国产综合久久久蜜臀图片| 日本欧美一区二区| 精品剧情在线观看| 国产伦精品一区二区三区免费迷| 久久免费精品国产久精品久久久久| 精品中文字幕一区二区小辣椒| 欧美一级片在线看| 国内久久精品视频| 久久精品男人的天堂| 成人综合在线观看| 一区二区三区精品在线观看| 色久综合一二码| 亚洲高清视频中文字幕| 欧美一区二区三区小说| 韩国成人精品a∨在线观看| 久久久精品免费免费| a亚洲天堂av| 亚洲成人在线观看视频| 日韩女优视频免费观看| 国产精品综合一区二区三区| 国产精品第五页| 欧美日韩的一区二区| 国产裸体歌舞团一区二区| 综合av第一页| 欧美日韩视频在线第一区 | 五月综合激情婷婷六月色窝| 正在播放一区二区| 国产成人鲁色资源国产91色综| 亚洲人成在线观看一区二区|