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

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

?? fastdbcommand.cs

?? FastDb是高效的內存數據庫系統
?? CS
字號:
using System;using System.Collections;using System.Text.RegularExpressions;namespace FastDbNet{  //-------------------------------------------------------------------------  /// <summary>  /// A class that implements a select/insert query that can be executed in   /// FastDb database.  A new command is created using the following code:  /// <code>  /// FastDbCommand command = connection.CreateCommand("select * from Table");  /// </code>  /// <seealso cref="FastDbConnection.CreateCommand"/>  /// </summary>  public class FastDbCommand: IDisposable {    private FastDbConnection connection;    private int     statement;    private string  sql;    private bool    described;    private bool    sql_changed;    private bool    bof;    private bool    eof;    private int     rec_no;    private string  table_name;    private bool    read_only;    private int     row_count;    private FastDbFields     fields;    private FastDbParameters vars;    internal FastDbCommand(FastDbConnection connection, string sql): this(connection) {      this.sql = sql;    }    internal FastDbCommand(FastDbConnection connection) {      this.connection = connection;      statement   = -1;      sql         = "";      described   = false;      sql_changed = false;      bof         = false;      eof         = false;      rec_no      = -1;      table_name  = "";      read_only   = true;      row_count   = 0;      fields      = new FastDbFields();      vars        = new FastDbParameters();    }    ~FastDbCommand() { Dispose(false); }    public void Free() { this.Free(true); }    public void Free(bool CheckError) {      if (statement == -1) return;      if (connection.Threaded) connection.Detach();      connection.RemoveCommand(this);      int rc;      if (connection.Session == -1)        rc = (int)CLI.ErrorCode.cli_ok;      else        rc = CLI.cli_free(statement);      statement = -1;      if (CheckError) CLI.CliCheck(rc, "cli_free failed");      Fields.Clear();      Parameters.Clear();      table_name = "";      described  = false;    }    /// <summary>    /// A reference to the FastDb connection where this command is defined.    /// </summary>    public FastDbConnection Connection { get { return connection; } }     /// <summary>    /// Internal statement handle.    /// </summary>    public int              Statement  { get { return statement; } }     /// <summary>    /// A container of fields defined in current command.    /// </summary>    public FastDbFields     Fields     { get { return fields; } }     /// <summary>    /// A container of parameters defined in current command.    /// </summary>    public FastDbParameters Parameters { get { return vars; } }     /// <summary>    /// An SQL string representing a query against the database.    /// </summary>    public string           SQL        { get { return sql; } set { sql = value; sql_changed = true; } }    /// <summary>    /// A property indicating whether current query is read-only or updatable.    /// </summary>    public bool             ReadOnly   { get { return read_only; } }    /// <summary>    /// If true - the cursor is at the beginning of the record-set.    /// </summary>    public bool             Bof        { get { return bof; } }    /// <summary>    /// If true - the cursor is at the end of the record-set.    /// </summary>    public bool             Eof        { get { return eof; } }    /// <summary>    /// Current number of record within the record-set: 0 ... RowCount    /// </summary>    public int              RecNo      { get { return rec_no; } }    /// <summary>    /// Total number of records within the record-set.    /// </summary>    public int              RowCount      { get { return row_count; } }    /// <summary>    /// Name of the table parsed out of the SQL property.    /// </summary>    public string           TableName  { get { return table_name; } }    private bool IsSelectQuery() { return String.Compare(sql.Substring(0, 6), "select", true) == 0; }    private string GetTableName() {      if (!sql_changed && table_name != "") return table_name;      if (sql == "")    return "";      // The tablename is the first identifier after FROM      Match m = Regex.Match(sql, @"insert\s+into\s+([a-zA-Z0-9_]+)\s*");      if (m.Success) return table_name = m.Groups[1].ToString();      m = Regex.Match(sql, @"select\s+\*?\s*from\s+([a-zA-Z0-9_]+)\s*");      if (m.Success)         return table_name = m.Groups[1].ToString();      else        throw new CliError((int)CLI.ErrorCode.cli_table_not_found);    }    /// <summary>    /// Fetch definition of fields from the database.  SQL property must be assigned    /// </summary>    public void Describe() {      if (described && !sql_changed) return;      else if (statement != -1) Free(false);      if (SQL == "") throw new CliError("SQL not assigned!");      string s = GetTableName();      if (SQL == "") throw new CliError("Error parsing table name from the SQL!");      if (fields.Count == 0)         fields.Assign(connection.DescribeTable(GetTableName()));      statement = CLI.CliCheck(CLI.cli_statement(connection.Session, sql), "cli_statement failed");      fields.Bind(statement);      vars.Bind(statement);      described = true;      sql_changed = false;    }    public int  Execute()               { return this.Execute(false, true); }    public int  Execute(bool Updatable) { return this.Execute(Updatable, true); }    /// <summary>    /// Executes an SQL command agains a FastDB connection.    /// </summary>    /// <param name="Updatable">Determines if records can be updated (optional, default: false).</param>    /// <param name="FetchFirst">Instructs to fetch the first record (optional, default: false).     /// If false, the user must call First() method after Execute().</param>    /// <returns>Number of records in the record-set fetched from the database.</returns>    public int  Execute(bool Updatable, bool FetchFirst) {      if (connection.Threaded) connection.Attach();      Describe();      read_only = !Updatable;      row_count =         CLI.CliCheck(        CLI.cli_fetch(statement, (Updatable) ? CLI.QueryType.cli_for_update : CLI.QueryType.cli_view_only));      rec_no = (FetchFirst) ? 0 : -1;      eof    = row_count <= 0;      if (FetchFirst && !eof) First();      else bof = FetchFirst;      return row_count;    }    public Cursor Select() { return Select(false); }    public Cursor Select(bool Updatable) {      Execute(Updatable, false);      return new Cursor(this);    }    /// <summary>    /// Inserts a record in the database.  Requires the SQL to be in the form:     /// "insert into TableName".    /// </summary>    /// <returns>An OID of the newly inserted record.</returns>    public uint Insert() {      uint oid = 0;      if (connection.Threaded) connection.Attach();      Describe();      CLI.CliCheck(CLI.cli_insert(statement, ref oid));      if (connection.Threaded) connection.Detach();      return oid;    }    /// <summary>    /// Updates a record in the database.  Requires the SQL to be in the form:     /// "select * from TableName ...", and the command must be updatable:    /// command.Execute(true).    /// </summary>    public void Update() {       if (read_only)         throw new CliError((int)CLI.ErrorCode.cli_not_update_mode);       CLI.CliCheck(CLI.cli_update(statement));     }    /// <summary>    /// Deletes all records in the current record-set returned by the select statement.    /// Requires the SQL to be in the form:     /// "select * from TableName ...", and the command must be updatable:    /// command.Execute(true);    /// command.Delete();    /// </summary>    public void Delete()   { CLI.CliCheck(CLI.cli_remove(statement)); }    /// <summary>    /// Freeze cursor. Make it possible to reuse cursor after commit of     /// the current transaction.    /// </summary>    public void Freeze()   { CLI.CliCheck(CLI.cli_freeze(statement)); }    /// <summary>    /// Unfreeze cursor. Reuse previously frozen cursor.    /// </summary>    public void UnFreeze() { CLI.CliCheck(CLI.cli_unfreeze(statement)); }    /// <summary>    /// Return the OID of the currently fetched record in the cursor.    /// </summary>    public uint OID        { get { return CLI.cli_get_oid(statement); } }    /// <summary>    /// Refresh the selected record the cursor points to.    /// </summary>    public void RefreshRecord() { CLI.CliCheck(CLI.cli_skip(statement, 0)); }    /// <summary>    /// Determines if the current command has an open cursor.    /// </summary>    /// <returns>true - the current query is open.</returns>    public bool IsOpen()        { return statement != -1; }    /// <summary>    /// Go to the first row of the current record-set.    /// </summary>    public void First()         { CLI.CliCheck(CLI.cli_get_first(statement)); rec_no = 0; }    /// <summary>    /// Go to the last row of the current record-set.    /// </summary>    public void Last()          { CLI.CliCheck(CLI.cli_get_last(statement)); rec_no = row_count; }        /// <summary>    /// Go to the next row of the current record-set.    /// </summary>    public bool Next() {       int n = CLI.cli_get_next(statement);       eof = n != (int)CLI.ErrorCode.cli_ok;      bof = false;      if (!eof) rec_no++;      return !eof;    }        /// <summary>    /// Go to the previous row of the current record-set.    /// </summary>    public bool Prev() {       int n = CLI.cli_get_prev(statement);       bof = n != (int)CLI.ErrorCode.cli_ok;      eof = false;      if (!bof) rec_no--;      return !bof;    }    public void Skip(int Records) { Skip(Records, false); }    /// <summary>    /// Skip N rows of the current record-set.    /// </summary>    /// <param name="Records">Number of records to skip</param>    /// <param name="RefreshOnNoSkip">Optional parameter (default: false). If true, forces a refresh when parameter Records=0.</param>    public void Skip(int Records, bool RefreshOnNoSkip) {      if ((Records == 0) && !RefreshOnNoSkip) return;      int n = CLI.cli_skip(statement, Records);      if (n == (int)CLI.ErrorCode.cli_not_found) {        if (Records >= 0) {          eof = true;          bof = false;          rec_no = row_count;        }        else {          bof = true;          eof = false;          rec_no = 0;        }      }      else {        CLI.CliCheck(n, "cli_skip failed");        rec_no += Records;      }    }    /// <summary>    /// Seeks for a given OID in the current record-set.    /// </summary>    /// <param name="oid">OID to search for.</param>    /// <returns>Position of the record in the selection.</returns>    public int  Seek(uint oid) {      return rec_no = CLI.CliCheck(CLI.cli_seek(statement, oid));    }    /// <summary>    /// Clears the current command, empties fields/parameters, and frees unmanaged resources.    /// </summary>    public void Clear() { Free(); }    /// <summary>    /// This class is used to iterate over a record set using foreach() statement.    /// Example:    /// <code>    /// FastDbCommand command = connection.CreateCommand("select * from persons");    /// foreach(FastDbCommand.Cursor cur in command.Select()) {    ///   foreach(FastDbField f in cur.Fields)     ///     Console.WriteLine(f.asString);    /// }    /// </code>    /// </summary>    public class Cursor: IEnumerable {      FastDbCommand command;      public Cursor(FastDbCommand command) {        this.command = command;      }      public FastDbFields  Fields   { get { return command.Fields; } }      public FastDbCommand Command  { get { return command; } }      #region IEnumerable Members      IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }      public Iterator GetEnumerator()         { return new Iterator(this); }      /// <summary>      /// This class implements IEnumerator interface. Use its methods within a       /// foreach() loop.        /// </summary>      public class Iterator: IEnumerator {        #region Private Fields        Cursor cursor;        #endregion        #region Constructors        public Iterator(Cursor cursor) {          this.cursor = cursor;        }        #endregion        #region Methods        public void Reset()         { cursor.command.First(); }        public bool MoveNext()      {           if (cursor.Command.RecNo == -1) {             Reset();             return !cursor.command.Eof;          } else {             return cursor.command.Next();           }        }        public Cursor Current { get { return cursor; } }        // The current property on the IEnumerator interface:        object IEnumerator.Current  { get { return Current; } }        #endregion      }      #endregion    }    #region IDisposable Members    // Implement IDisposable.    // This method is not virtual. A derived class should not be able to override this method.    public void Dispose() {      Dispose(true);      // Take yourself off the Finalization queue       // to prevent finalization code for this object      // from executing a second time.      GC.SuppressFinalize(this);    }    // Dispose(bool disposing) executes in two distinct scenarios.    // If disposing equals true, the method has been called directly    // or indirectly by a user's code. Managed and unmanaged resources    // can be disposed.    // If disposing equals false, the method has been called by the     // runtime from inside the finalizer and you should not reference     // other objects. Only unmanaged resources can be disposed.    protected virtual void Dispose(bool disposing) {      if(this.statement != -1) {   // Check to see if Dispose has already been called.        if(disposing) {} // Dispose managed resources here.        Free();          // Release unmanaged resources.       }    }    #endregion  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲成人精品av97| 国产精品麻豆一区二区| 国产精品三级在线观看| 亚洲一区二区三区四区在线免费观看 | 精品视频在线看| 久久久久久久综合日本| 亚洲高清中文字幕| 国产91精品精华液一区二区三区| 欧美日韩一区二区三区不卡 | 884aa四虎影成人精品一区| 亚洲国产成人私人影院tom| 亚洲风情在线资源站| 91老师片黄在线观看| 国产亚洲va综合人人澡精品| 日本欧美一区二区在线观看| 91在线观看美女| 国产精品全国免费观看高清 | 欧美亚洲日本一区| 国产精品久久久久久久久免费相片 | 欧美日韩在线播放一区| 国产精品三级久久久久三级| 国产乱人伦偷精品视频免下载| 91精品黄色片免费大全| 亚洲成a人片在线不卡一二三区| www.激情成人| 国产精品美女www爽爽爽| 国产精品一区二区久久不卡| 精品日韩欧美在线| 裸体歌舞表演一区二区| 欧美一区二区久久| 麻豆91精品视频| 精品日韩成人av| 韩国av一区二区三区四区| 欧美本精品男人aⅴ天堂| 美女网站色91| 久久免费精品国产久精品久久久久 | 91成人免费在线| 精品免费国产二区三区| 午夜伊人狠狠久久| 欧美综合欧美视频| 亚洲综合在线免费观看| 波波电影院一区二区三区| 久久精品亚洲麻豆av一区二区 | 日韩欧美国产精品| 午夜精品在线看| 欧美日韩一区二区三区在线看 | 欧美一二三区在线观看| 亚洲小说欧美激情另类| 91麻豆国产香蕉久久精品| 国产精品污污网站在线观看| 国产 欧美在线| 国产三级欧美三级日产三级99| 久久丁香综合五月国产三级网站| 在线精品视频小说1| 一区二区三区欧美亚洲| 欧美三级三级三级| 日韩一区二区三区视频| 欧美一区二区国产| 欧美日韩亚洲综合在线| 欧美精品丝袜中出| 精品国产伦理网| 一区二区三区久久久| 91麻豆蜜桃一区二区三区| 亚洲男人的天堂一区二区| 色偷偷成人一区二区三区91 | 久久精品72免费观看| 欧美一级专区免费大片| 久久国产精品72免费观看| 精品噜噜噜噜久久久久久久久试看| 免费三级欧美电影| 国产亚洲美州欧州综合国| kk眼镜猥琐国模调教系列一区二区| 国产精品大尺度| 欧美色爱综合网| 国产麻豆成人传媒免费观看| 国产精品久久夜| 欧美性猛片xxxx免费看久爱| 美女任你摸久久| 国产精品午夜久久| 欧洲在线/亚洲| 91丨porny丨国产入口| 亚洲最新在线观看| 91麻豆精品国产自产在线| 国产精品自拍三区| 亚洲黄色尤物视频| 日韩精品一区二区三区视频| 成人国产精品免费观看| 亚洲一区在线观看免费| 91精品国产综合久久久久久久 | 国产真实乱偷精品视频免| 国产精品久线观看视频| 91精品国产乱| 99re热这里只有精品视频| 麻豆国产欧美日韩综合精品二区| 国产精品污污网站在线观看 | 成人听书哪个软件好| 午夜久久福利影院| 中文字幕一区二区三区乱码在线| 92精品国产成人观看免费| 综合电影一区二区三区| 欧美日韩在线直播| 国产一区二区视频在线播放| 色偷偷成人一区二区三区91| 欧美一区二区三区色| 激情久久五月天| 国产精品国产三级国产专播品爱网| 波多野结衣一区二区三区| 天天影视涩香欲综合网| 亚洲欧美在线高清| 国产精品福利一区| 欧美久久婷婷综合色| 日本中文字幕一区二区视频| 日本一区二区视频在线| 亚洲精品一区二区三区香蕉| 欧美一卡二卡三卡四卡| 91影视在线播放| va亚洲va日韩不卡在线观看| 国产精品一区二区91| 麻豆精品一区二区三区| 亚洲777理论| 自拍偷拍欧美激情| 中文av一区二区| 欧美经典一区二区三区| 久久精品人人爽人人爽| 2020国产成人综合网| 欧美电影免费观看高清完整版| 欧美日本一道本在线视频| 91搞黄在线观看| 色老汉一区二区三区| 色婷婷久久久综合中文字幕| aaa欧美日韩| 91麻豆产精品久久久久久| 国产成人亚洲综合a∨猫咪| 不卡av免费在线观看| 大陆成人av片| 91丝袜美腿高跟国产极品老师 | 国产精品天天摸av网| 久久久99精品免费观看| 久久久久久毛片| 国产精品美女久久久久久| 亚洲欧洲日产国码二区| 综合久久久久久| 亚洲最快最全在线视频| 亚洲一区二区精品久久av| 亚洲一区在线免费观看| 午夜精品一区二区三区电影天堂| 亚洲综合无码一区二区| 五月天久久比比资源色| 另类专区欧美蜜桃臀第一页| 国产69精品久久久久毛片| www.亚洲色图| 欧美亚洲综合在线| 91精品国产综合久久精品麻豆| 欧美日韩一区国产| 久久久777精品电影网影网| 国产精品久久毛片a| 亚洲精品美国一| 午夜一区二区三区视频| 强制捆绑调教一区二区| 国产99久久久国产精品潘金| 一本到高清视频免费精品| 欧美精品色一区二区三区| 日韩视频一区在线观看| 中国av一区二区三区| 亚洲视频小说图片| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲成人一区二区| 国产精品一区一区| 欧美日韩在线免费视频| 久久精品欧美一区二区三区不卡| 一区二区三区精密机械公司| 麻豆成人在线观看| 9色porny自拍视频一区二区| 欧美日韩成人在线| 国产日韩高清在线| 一区二区三区四区在线播放| 三级久久三级久久| 欧美精品久久99| 国产日韩av一区二区| 五月天久久比比资源色| 成人精品免费视频| 欧美视频一区二区三区在线观看 | 精品影视av免费| 99久久99久久精品免费观看| 91精品国产综合久久久蜜臀图片| 国产精品不卡在线观看| 国产在线精品一区二区不卡了| 在线观看日韩电影| 欧美国产一区在线| 久久99精品久久久久婷婷| 在线看日韩精品电影| 欧美成人a∨高清免费观看| 亚洲人成网站在线| 国产精品一二三在| 久久久午夜精品理论片中文字幕| 五月天激情综合网| 欧美裸体一区二区三区| 亚洲欧美一区二区三区国产精品| 国产传媒欧美日韩成人| 欧美成人艳星乳罩|