<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      初識EseNt

      一、什么是EseNt
      EseNt(Extensible Storage Engine)是一個原生支持Windows的嵌入式數據庫引擎,屬于非關系型數據庫(NoSql),運行于Windows平臺。性能和可靠性已經受住了時間的考驗,每秒可以執行大約10萬次插入操作夠變態。
      EseNt數據庫引擎遵循開源軟件規則,可通過以下網址下載或查看更多的詳細:
      http://managedesent.codeplex.com/
      msdn的Api描述:
      http://msdn.microsoft.com/en-us/library/gg269245%28v=EXCHG.10%29.aspx
      附:性能測試
      建表Users,包含四個字段,1整形,2字符串,1日期型.
      在不加查詢索引的情況下:插入30萬條記錄,用時15s,插入90萬條記錄,耗時48s,CPU占用率為30%+-
      添加主鍵索引和一個text類型的查詢索引:插入3萬條記錄,耗時3.4s,插入30W條記錄,用時17.19s, CPU占用率為30%+
      還是對Users表,表內插入100W條記錄,對一個Text字段進行查詢,耗時0.39s+-,但對30W條記錄作對象序列化時用了3.2s+-.
      二、EseNt在C#中應用
      EseNt作為Windows平臺的數據庫引擎,使用C#可以方便將它集成到我們的項目中來,為我們的應用服務。
      從http://managedesent.codeplex.com/下載esent開發包,解壓得到兩個.dll文件:Esent.Collections.dll, Esent.Interop.dll,從這兩個文件的命名,我們可以清楚的知道它們的用途,
      Esent.Collections.dll為數據容器包,Esent.Interop.dll為用到的API函數集合,將這兩個文件引用到項目中來。
      OK, 現在可以讓esent為我們的應用服務了。
      一般,在應用中,我們分幾步來使EseNt為我們工作:
      1、創建一個實例對象:
          在esent里提供了函數用于完成此項功能:
         Api.JetCreateInstance(out instance, InstanceKey);
         同時通過JetSetSystemParameter函數設置此實例的一些屬性,如下代碼設置了當時實例刪除不需要用到的日志
         Api.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.CircularLog, 1, null);
         采用JetInit對當前實例初始化,使instance可用
         Api.JetInit(ref instance);
      2、開始一個會話對象:
         通過Api.JetBeginSession開始一個實例的會話
         Api.JetBeginSession(instance, out sesid, null, null);
      3、應用實例對象和會話對象進行數據庫的操作:
         3.1、創建數據庫
         Api.JetCreateDatabase(sesId, FullDbName, null, out dbId, CreateDatabaseGrbit.OverwriteExisting);
         3.2、打開數據庫
         注意:在打開數據庫前,得先用Api.JetAttachDatabase將備用數據庫附加到當前會話,不然會引發 No such database 異常.
         Api.JetAttachDatabase(sesId, FullDbName, AttachDatabaseGrbit.None);
           Api.JetOpenDatabase(sesId, FullDbName, null, out dbId, OpenDatabaseGrbit.None);
         3.3、創建表
         JET_TABLEID table;
         Api.JetCreateTable(sesId, dbId, "users", 0, 100, out table);
         3.4、打開表
         此處用了打開表時的只讀屬性,在讀時會應該快一些吧~
         Api.JetOpenTable(sesId, dbId, "users", null, 0, OpenTableGrbit.ReadOnly, out table);
         3.5、創建表結構
             Api.JetBeginTransaction(sesId);
             JET_COLUMNDEF columndef = new JET_COLUMNDEF();
              JET_COLUMNID columnId;
          JET_COLUMNID columnName;
          JET_COLUMNID columnBirthday;
          JET_COLUMNID columnRemark;
                  
          columndef.coltyp = JET_coltyp.Long;
          columndef.cp = JET_CP.ASCII;
          Api.JetAddColumn(sesId, table, "Id", columndef, null, 0, out columnId);

          columndef.coltyp = JET_coltyp.Text;
          columndef.cp = JET_CP.Unicode;
          Api.JetAddColumn(sesId, table, "Name", columndef, null, 0, out columnName);

          columndef.coltyp = JET_coltyp.DateTime;
          columndef.cp = JET_CP.ASCII;
          Api.JetAddColumn(sesId, table, "Birthday", columndef, null, 0, out columnBirthday);

          columndef.coltyp = JET_coltyp.LongText;
          columndef.cp = JET_CP.Unicode;
          Api.JetAddColumn(sesId, table, "Remark", columndef, null, 0, out columnRemark);

          Api.JetCommitTransaction(sesId, CommitTransactionGrbit.None);
          
          通過以上的話句創建了一個 users表的數據結構,其中包括了字段: Id,整型 Name,255長度的通用碼 Birthday,日期類型 Remark,2G長度的通用碼
          
         3.6、插入數據信息
         
             Api.JetBeginTransaction(sesId);
             Api.JetPrepareUpdate(sesId, table, JET_prep.Insert);
             Api.SetColumn(sesId, table, columnId, 1);
             Api.SetColumn(sesId, table, columnName, "毛哥哥", Encoding.Unicode);
             Api.SetColumn(sesId, table, columnRemark, "毛哥哥,中國革命家、戰略家、理論家和詩人,中國毛哥哥、中國人民解放軍和中華人民共和國的主要締造者和領袖,毛哥哥思想的主要創立者。字潤之(原作詠芝,后改潤芝),筆名子任。1893年出生于湖南省長沙府湘潭縣韶山沖,1976年逝世于北京。從1949年到1976年,毛哥哥是中華人民共和國的最高領導人。他對馬克思列寧主義的發展、軍事理論的貢獻以及對毛哥哥的理論貢獻是毛哥哥思想最重要的組成部分。毛哥哥被視為現代世界歷史中最重要的人物之一,《時代》雜志將他評為20世紀最具影響100人之一。", Encoding.Unicode);
             Api.SetColumn(sesId, table, columnBirthday, new DateTime(1893,7,1));
             Api.JetUpdate(sesId, table);
              Api.JetCommitTransaction(sesId, CommitTransactionGrbit.None);
          
          通過以上代碼寫對已創建的Users表寫入一條記錄.
          
         3.7、查詢
         3.8、讀取數據
      4、資源回收
         在使用完資源回收是個很好的習慣,建議大家在代碼中很好的貫徹這個習慣,使你的應用更加健壯.
           4.1、表資源回收
                   一般在使用完表后就回收
                   Api.JetCloseTable(sesId, table);
           4.2、數據庫資源回收
                   Api.JetCloseDatabase(sesId, dbId, CloseDatabaseGrbit.None);
           4.3、結束會話對象
                   Api.JetEndSession(sesId, EndSessionGrbit.None);
           4.4、清空實例對象
                   Api.JetTerm(instance);



      posted @ 2011-09-23 16:54  hongchaoxing  閱讀(2311)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 国产精品日韩中文字幕| 亚洲av无在线播放中文| 91福利视频一区二区| 久久国产精品久久久久久| 激情内射亚洲一区二区三区| 丁香五月婷激情综合第九色 | 久久精品国产99久久6| www亚洲精品| 久久羞羞色院精品全部免费| 草裙社区精品视频播放| 18av千部影片| 窝窝午夜色视频国产精品破| 91福利视频一区二区| 午夜福利一区二区在线看| 少妇无套内射中出视频| 日本熟妇人妻一区二区三区| 国产三级a三级三级| 人妻无码中文专区久久app| 日本福利一区二区精品| 国产精品一区二区三区蜜臀| 好吊视频一区二区三区人妖| 日本激情久久精品人妻热| 99久久激情国产精品| 亚洲成人精品一区二区中| 精品国产成人午夜福利| 国产综合色在线精品| 男人和女人做爽爽免费视频| 西西大胆午夜人体视频| 丹寨县| 国产一区二区三区精美视频| 日韩精品无码一区二区视频| 应用必备| 国产精品久久久久鬼色| 99久久婷婷国产综合精品| Y111111国产精品久久久| 精品一二三四区在线观看| 国产精品疯狂输出jk草莓视频 | 亚洲精品美女久久久久9999 | 亚洲18禁一区二区三区| 国产亚洲第一精品| 久久一日本道色综合久久|