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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? myldbsqlprocessor.pas

?? 一個(gè)本地database引擎,支持中文T_Sql查詢,兼容DELPHI標(biāo)準(zhǔn)數(shù)據(jù)庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBDDLCreateTable


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDDLDropTable
//
////////////////////////////////////////////////////////////////////////////////


 TMYLDBDDLDropTable = class (TMYLDBDDLTableManipulation)
  protected
   // Drop Table
   procedure DropTable(query: TDataSet);
  public
   // parses query
   procedure Parse; override;
   // executes query
   procedure ExecSQL(
                      query: TDataset;
                      IsRoot,
                      RequestLive: boolean;
                      var ReadOnly: boolean;
                      ParentQueryAO: TMYLDBAO = nil;
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBDDLDropTable



////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDDLTruncateTable
//
////////////////////////////////////////////////////////////////////////////////


 TMYLDBDDLTruncateTable = class (TMYLDBDDLTableManipulation)
  protected
   // Truncate Table
   procedure TruncateTable(query: TDataSet);
  public
   // parses query
   procedure Parse; override;
   // executes query
   procedure ExecSQL(
                      query: TDataset;
                      IsRoot,
                      RequestLive: boolean;
                      var ReadOnly: boolean;
                      ParentQueryAO: TMYLDBAO = nil;
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBDDLTruncateTable



////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDDLAlterTable
//
////////////////////////////////////////////////////////////////////////////////


 // Types of alter table
 TAlterType = (atAdd, atDrop, atModify, atRenameColumn, atRenameTable);

 TMYLDBDDLAlterTable = class (TMYLDBDDLTableManipulation)
  protected
   // AlterType token
   AlterType:         TAlterType;
   NewPassword:       String;
   NewEncrypted:      Boolean;
   DropColumnNamesList:       TStringList;
   RenameColumnOldNamesList:  TStringList;
   RenameColumnNewNamesList:  TStringList;
   NewTableName:              String;

   // parse AlterType token
   procedure ParseAlterTypeToken;
   // parse NewPassword token
   procedure ParseNewPasswordToken;
   // Parse RenameColumnList
   procedure ParseRenameColumnsList;
   // Alter Table
   procedure DropColumn(T: TDataSet);
   procedure AddColumn(T: TDataSet);
   procedure Modify(T: TDataSet);
   procedure RenameColumn(T: TDataSet);
  public
   // creates object
   constructor Create(Lexer: TMYLDBLexer; Query: TDataSet);
   // destroy
   destructor Destroy; override;
   // parse query
   procedure Parse; override;
   // execute query
   procedure ExecSQL(
                      query: TDataset;
                      IsRoot,
                      RequestLive: boolean;
                      var ReadOnly: boolean;
                      ParentQueryAO: TMYLDBAO = nil;
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBDDLAlterTable


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDDLRenameTable
//
////////////////////////////////////////////////////////////////////////////////

 TMYLDBDDLRenameTable = class (TMYLDBDDLAlterTable)
   // parse query
   procedure Parse; override;
 end;

////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDDLCreateIndex
//
////////////////////////////////////////////////////////////////////////////////

 TMYLDBDDLCreateIndex = class (TMYLDBSQLCommand)
  protected
   Unique:          boolean;
   IndexName:       String;
   DatabaseFileName:String;
   TableName:       String;
   TableAlias:      String;
   Password:        String;
   InMemory:        Boolean;
   MYLDBIndexFields:  array of TMYLDBIndexField; // Index Fields
  public
   // creates object
   constructor Create(Lexer: TMYLDBLexer; Query: TDataSet);
   // parse query
   procedure Parse; override;
   // execute query
   procedure ExecSQL(
                      query: TDataset;
                      IsRoot,
                      RequestLive: boolean;
                      var ReadOnly: boolean;
                      ParentQueryAO: TMYLDBAO = nil;
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBDDLCreateIndex



////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDDLDropIndex
//
////////////////////////////////////////////////////////////////////////////////


 TMYLDBDDLDropIndex = class (TMYLDBSQLCommand)
  protected
   IndexName: String;
   DatabaseFileName:String;
   TableName:       String;
   TableAlias:      String;
   Password:        String;
   InMemory:        Boolean;
  public
   // creates object
   constructor Create(Lexer: TMYLDBLexer; Query: TDataSet);
   // parse query
   procedure Parse; override;
   // execute query
   procedure ExecSQL(
                      query: TDataset;
                      IsRoot,
                      RequestLive: boolean;
                      var ReadOnly: boolean;
                      ParentQueryAO: TMYLDBAO = nil;
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBDDLDropIndex


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBSQLStartTransaction
//
////////////////////////////////////////////////////////////////////////////////


 TMYLDBSQLStartTransaction = class (TMYLDBSQLCommand)
  public
   // parse query
   procedure Parse; override;
   // execute query
   procedure ExecSQL(
                      query: TDataset;
                      IsRoot,
                      RequestLive: boolean;
                      var ReadOnly: boolean;
                      ParentQueryAO: TMYLDBAO = nil;
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBSQLStartTransaction



////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBSQLCommit
//
////////////////////////////////////////////////////////////////////////////////


 TMYLDBSQLCommit = class (TMYLDBSQLCommand)
  private
   FFlush: Boolean;
  public
   // parse query
   procedure Parse; override;
   // execute query
   procedure ExecSQL(
                      query: TDataset;
                      IsRoot,
                      RequestLive: boolean;
                      var ReadOnly: boolean;
                      ParentQueryAO: TMYLDBAO = nil;
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBSQLCommit



////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBSQLRollback
//
////////////////////////////////////////////////////////////////////////////////


 TMYLDBSQLRollback = class (TMYLDBSQLCommand)
  public
   // parse query
   procedure Parse; override;
   // execute query
   procedure ExecSQL(
                      query: TDataset;
                      IsRoot,
                      RequestLive: boolean;
                      var ReadOnly: boolean;
                      ParentQueryAO: TMYLDBAO = nil;
                      ParentCursor: TMYLDBCursor = nil
                     ); override;
 end;//TMYLDBSQLRollback




 // set field value from MYLDBVariant
 procedure SetMYLDBVariantIntoField(Value: TMYLDBVariant; Field: TField);



implementation


uses MYLDBMain, MYLDBBaseEngine;





////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBSQLProcessor
//
////////////////////////////////////////////////////////////////////////////////


//------------------------------------------------------------------------------
// Constructor
//------------------------------------------------------------------------------
constructor TMYLDBSQLProcessor.Create(Query: TDataSet);
begin
  FSQLParams := TMYLDBSQLParams.Create;
  MYLDBQuery := Query;
  FCursor := nil;
  FSqlText := '';
  SetLength(queries, 0);
  FLex := nil;
end;//Create


//------------------------------------------------------------------------------
// Destructor
//------------------------------------------------------------------------------
destructor TMYLDBSQLProcessor.Destroy;
begin
  FSQLParams.Free;
  if (FLex <> nil) then
    FLex.Free;
  ClearQueries;
end;//Destroy


//------------------------------------------------------------------------------
// PrepareStatement
//------------------------------------------------------------------------------
procedure TMYLDBSQLProcessor.PrepareStatement(SQLText: PChar);
begin
  FSqlText := SQLText;
end;//PrepareStatement


//------------------------------------------------------------------------------
// OpenQuery
//------------------------------------------------------------------------------
function TMYLDBSQLProcessor.OpenQuery: TMYLDBCursor;
begin
  FRowsAffected := 0;
  Result := nil;
  ClearQueries;

  if (FLex <> nil) then
    FLex.Free;
  FLex := TMYLDBLexer.Create(FSqlText, FSQLParams);
  while ParseNextCommand(FLex) do
    begin
      Queries[0].ExecSQL(MYLDBQuery, True, FRequestLive, FReadonly);
      FRowsAffected := RowsAffected + Queries[0].RowsAffected;
    end;//if
  if (Queries[0] <> nil) then
    begin
      Result := Queries[0].GetResultCursor;
      if (Result <> nil) then
        Result.InternalFirst;
    end;

end;//OpenQuery


//------------------------------------------------------------------------------
// ExecuteQuery
//------------------------------------------------------------------------------
procedure TMYLDBSQLProcessor.ExecuteQuery;
begin
  OpenQuery;
end;//ExecuteQuery


//------------------------------------------------------------------------------
// parse SQL script and fullfill SQL command objects
//------------------------------------------------------------------------------
function TMYLDBSQLProcessor.ParseNextCommand(Lexer: TMYLDBLexer): Boolean;
var
  Token: TToken;
begin

 if (Lexer.NumCommands = 0) then
  raise EMYLDBException.Create(30145, ErrorGBlankSqlCommand);

 if Lexer.GetNextCommand then
  begin
   Result := True;

   // free prior query object
   if (Length(Queries) > 0) then
     begin
        Queries[0].Free;
        Queries[0] := nil;
        SetLength(Queries, 0);
     end;

   // look at first token
   if (not Lexer.GetCurrentToken(Token)) then
    raise EMYLDBException.Create(30146, ErrorGBlankSqlCommand);

   if (Token.TokenType = tktReservedWord) then
     case Token.ReservedWord of
     rwSELECT:  // SELECT

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美电影一区| 日韩一区二区三区高清免费看看| 亚洲精品成人天堂一二三| 欧美二区三区的天堂| 国产福利电影一区二区三区| 亚洲一区二区高清| 久久久久久久久久电影| 欧美另类一区二区三区| www.日韩精品| 国产在线精品一区二区夜色| 亚洲在线中文字幕| 中文字幕色av一区二区三区| 日韩女优av电影| 欧美日韩一卡二卡三卡| 色综合久久99| 成人免费看片app下载| 青青草原综合久久大伊人精品优势| 中文字幕在线观看一区| 久久丝袜美腿综合| 91精品国产综合久久久久久久久久| 99精品欧美一区二区蜜桃免费| 韩国三级在线一区| 免费视频最近日韩| 爽好多水快深点欧美视频| 亚洲欧洲中文日韩久久av乱码| 久久在线免费观看| 日韩欧美一区在线| 制服丝袜亚洲色图| 欧美日韩一二三区| 在线看不卡av| 色综合色狠狠综合色| 成人av网址在线| 国产精品99久久久久久宅男| 狠狠v欧美v日韩v亚洲ⅴ| 麻豆国产欧美日韩综合精品二区| 亚洲国产aⅴ成人精品无吗| 一区二区三区蜜桃| 夜夜亚洲天天久久| 亚洲在线中文字幕| 亚洲国产精品久久不卡毛片| 亚洲免费看黄网站| 一区二区三区四区不卡在线| 18欧美乱大交hd1984| 最新国产成人在线观看| 亚洲免费成人av| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品一区二区三区四区| 国内不卡的二区三区中文字幕| 激情文学综合插| 国产乱子轮精品视频| 韩国av一区二区| 国产麻豆精品95视频| 国产不卡在线视频| 99在线精品观看| 欧洲精品一区二区| 在线播放中文字幕一区| 日韩三级视频中文字幕| 久久久不卡网国产精品二区| 国产欧美一区二区精品久导航| 国产精品私房写真福利视频| 国产精品视频九色porn| 亚洲欧美一区二区三区极速播放| 亚洲欧美电影院| 亚洲动漫第一页| 蜜臂av日日欢夜夜爽一区| 激情深爱一区二区| 成a人片亚洲日本久久| 91捆绑美女网站| 欧美精品久久99| 精品国产1区2区3区| 国产精品天美传媒| 亚洲一区二区三区自拍| 日韩成人精品在线观看| 国产高清精品久久久久| 91国产免费观看| 91精品国产乱| 欧美激情中文字幕一区二区| 亚洲区小说区图片区qvod| 免费在线观看不卡| 波多野结衣91| 欧美一级欧美一级在线播放| 国产免费观看久久| 午夜精品一区二区三区三上悠亚| 国产在线精品一区二区三区不卡 | 成人国产电影网| 欧美午夜一区二区三区| 精品成a人在线观看| 亚洲欧洲制服丝袜| 国产一本一道久久香蕉| 欧美性生活久久| 国产欧美日韩不卡| 午夜精品久久久久久不卡8050| 国产91色综合久久免费分享| 欧美乱熟臀69xxxxxx| 国产精品青草综合久久久久99| 日韩av在线发布| 94色蜜桃网一区二区三区| 精品剧情v国产在线观看在线| 综合久久给合久久狠狠狠97色| 久久精品久久久精品美女| 99精品视频一区二区三区| 日韩精品一区二区三区蜜臀 | 中文字幕一区二区视频| 美日韩黄色大片| 色婷婷av一区二区三区gif | 中文在线资源观看网站视频免费不卡 | 一区二区三区在线播放| 国产老肥熟一区二区三区| 在线成人小视频| 亚洲手机成人高清视频| 国产精品影视天天线| 91麻豆精品国产91久久久久久久久| 国产精品久久久久三级| 激情综合色丁香一区二区| 欧美三级视频在线观看| 日韩一区日韩二区| 国产一区二区三区观看| 日韩一级二级三级精品视频| 亚洲一区二区三区四区在线观看| 成人短视频下载| 国产色产综合色产在线视频| 麻豆成人免费电影| 91精品国产91久久综合桃花| 亚洲综合成人网| 色综合天天综合网天天狠天天 | 91国产免费观看| 亚洲丝袜美腿综合| 91在线观看成人| 亚洲婷婷在线视频| 91在线观看美女| 亚洲欧美在线视频| 波多野结衣的一区二区三区| 欧美高清一级片在线观看| 国产一区二区三区国产| 久久久久国产一区二区三区四区| 久久66热re国产| 精品国产一区a| 麻豆精品久久久| 亚洲精品一区二区三区影院| 美腿丝袜在线亚洲一区| 日韩欧美在线观看一区二区三区| 蜜臂av日日欢夜夜爽一区| 7777精品伊人久久久大香线蕉超级流畅 | 中文字幕av一区二区三区高| 风流少妇一区二区| 国产精品久久久久久久久久免费看 | 国产精品久久久久久久久晋中| 日韩一区二区三区精品视频| 亚洲私人黄色宅男| 一本大道综合伊人精品热热| 亚洲图片欧美激情| 激情图片小说一区| 久久久久国产精品厨房| 亚洲国产精品久久艾草纯爱| 欧美欧美欧美欧美| 国产成人aaa| 亚洲成人免费视| 国产视频一区在线播放| 欧美日韩一级黄| 成人一区在线观看| 日本欧美一区二区三区乱码 | 精品不卡在线视频| 91浏览器入口在线观看| 国产真实乱子伦精品视频| 一区二区免费在线播放| 国产午夜亚洲精品不卡| 4438x成人网最大色成网站| 成人黄色软件下载| 久久精品国产精品亚洲综合| 亚洲精品乱码久久久久久久久 | 91精选在线观看| 91网站在线播放| 国产在线视频一区二区| 亚洲图片欧美色图| 国产精品沙发午睡系列990531| 在线成人免费观看| 91毛片在线观看| 国产激情视频一区二区三区欧美| 婷婷六月综合网| 亚洲丝袜精品丝袜在线| 久久久久久久久久久久久女国产乱| 欧美羞羞免费网站| 成人av在线观| 国产精品12区| 精品在线视频一区| 日韩成人精品在线| 亚洲妇熟xx妇色黄| 亚洲色图制服丝袜| 国产精品久久久久久久久免费丝袜| 久久综合色综合88| 337p亚洲精品色噜噜狠狠| 在线精品视频小说1| 波多野结衣中文字幕一区二区三区| 精品在线观看视频| 美女一区二区视频| 日本欧美大码aⅴ在线播放| 香蕉加勒比综合久久| 亚洲成在人线免费| 亚洲第一福利视频在线| 亚洲国产日韩精品|