设为首页 加入收藏

TOP

nosql数据库STSDB的一般性使用(二)
2015-07-24 11:33:59 来源: 作者: 【 】 浏览:11
Tags:nosql 数据库 STSDB 一般性 使用
eEngine engine = STSdb.FromFile(DataBase)) //① { var table = engine.OpenXTable(TableName); //② //var table2 = engine.OpenXTable("table2"); //支持key嵌套 for (int i = 0; i < 1000; i++) { table[i] = new TStudent { Name = "Jon_" + i.ToString(), Age = new Random().Next(25, 30), GroupNumber = i + (new Random().Next(310, 399)), CourseList = new List() { new TCourse{ CourseName="C#高级编程"+i.ToString(), Teacher="老陈"+i.ToString(), Score=80 }, new TCourse{ CourseName="C#函数式程序设计"+i.ToString(), Teacher="老李"+i.ToString(), Score=90 }, new TCourse{ CourseName="多线程实战应用"+i.ToString(), Teacher="老张"+i.ToString(), Score=95 }, } }; } engine.Commit(); } } /// /// 读取数据 /// static void ReadData() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { var table = engine.OpenXTable(TableName); //ITable:IEnumerable对象 foreach (var item in table) Console.WriteLine(JsonConvert.SerializeObject(item, Newtonsoft.Json.Formatting.Indented)); Console.WriteLine(table.Count()); //TableName表中有100行数据 } } /// /// /// static void DatabaseSchemeInfo() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) //① { IDescriptor descriptor = engine[TableName]; Console.WriteLine(descriptor.CreateTime.ToString("yyyy-MM-dd HH:mm:ss")); Console.WriteLine(descriptor.ModifiedTime.ToString("yyyy-MM-dd HH:mm:ss")); Console.WriteLine(descriptor.Name); //ID是表的唯一标识id,表一旦创建,它就创建了,后面只要表在就不会修改 //重建表它会从新分配 Console.WriteLine(descriptor.ID); //... } } /// /// 读取单条数据 /// static void ReadItem() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { var table = engine.OpenXTable(TableName); //ITable: IEnumerable对象 //var item = table.FirstOrDefault(x => x.Key <= 15 && x.Key >= 10); //key是5的记录 //table[10]; var item = table.FirstOrDefault(x => x.Key == 5); //key是5的记录 if (item.Value != null) Console.WriteLine(JsonConvert.SerializeObject(item, Newtonsoft.Json.Formatting.Indented)); else Console.WriteLine("key = 5 的记录不存在!"); //Console.WriteLine("10<= key <= 15 的记录不存在!"); } } static void AddItems() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { var table = engine.OpenXTable(TableName); //table[100] = new TStudent(){....}; table.InsertOrIgnore(2, new TStudent()); engine.Commit(); } } /// /// 删除表数据 /// static void DeleteItems() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { var table = engine.OpenXTable(TableName); //ITable:IEnumerable对象 if (table != null) { //table.Clear(); //清空表数据 table.Delete(5); //删掉key是5的记录 //table.Delete(10, 15); //删掉key从10到15的记录 engine.Commit(); //提交操作,不能少 } } } /// /// 按需获取数据 /// static void GetRecord() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { /* Forward向前读取, Backward向后读取, 它们都有2个重载,下面重点说明第二个重载 * Forward(TKey from, bool hasFrom, TKey to, bool hasTo); * Backward(TKey to, bool hasTo, TKey from, bool hasFrom); * 超出范围的都不会排除,另外,查询范围超出也不会有影响,但是要注意一点,formkey和endkey的大小关系 * * 0<----------[(S)]----------------[(E)]------------->N * */ var table = engine.OpenXTable(TableName); var fiterTB = table.Forward(2, true, 9, true); //索引从2到9 //var fiterTB = table.Forward(2, false, 9, true); //索引从0到9 //var fiterTB = table.Forward(2, false, 9, false); //索引从0到表结尾 //var fiterTB = table.Forward(2, true, 9, false); //索引从2到表结尾 //Backward刚好相反 foreach (var item in fiterTB) Console.WriteLine(JsonConvert.SerializeObject(item, Newtonsoft.Json.Formatting.Indented)); } } /// /// 数据分页 /// static void PageRecord() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { int pageIndex = 2; int pageSize = 10; var table = engine.OpenXTable(TableName); var fiterTB = table.Skip(pageSize * (pageIndex - 1)).Take(pageSize); foreach (var item in fiterTB) Console.WriteLine(JsonConvert.SerializeObject(item, Newtonsoft.Json.Formatting.Indented)); } } /// /// 文件数和记录数 /// static void Others() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { //表和虚拟文件的数量 Console.WriteLine("数据库 " + DataBase + " 中有 {0} 张表:{1}", engine.Count, TableName); //表记录数 var table = engine.OpenXTable(TableName); Console.WriteLine("表" + TableName + "中有" + table.Count() + "条记录"); } } /// /// 表是否存在 /// static void ExistsTable() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { //判断表存在与否 //bool exists = engine.Exists(NewTableName); //Console.WriteLine(NewTableName + " exist?=>{0}", exists.ToString()); bool exists = engine.Exists(TableName); Console.WriteLine(TableName + " exist?=>{0}", exists.ToString()); } } /// /// 重命名表名 /// static void ReNameTable() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { //判断表存在与否 bool exists = engine.Exists(TableName); Console.WriteLine(TableName + " exist? =>{0}", exists.ToString()); //表重命名 engine.Rename(TableName, NewTableName); Console.WriteLine("表" + TableName + "被重命名为:" + NewTableName); if (engine.Exists(TableName)) Console.WriteLine("old table name \"" + TableName + "\" exist"); if (engine.Exists(NewTableName)) Console.WriteLine("new table name \"" + NewTableName + "\" exist"); } } /// /// 删除表 /// static void DeleteTable() { using (IStorageEngine engine = STSdb.FromFile(DataBase)) { //删除表 engine.Delete(TableName); //engine.Delete(NewTableName); engine.Commit(); } } #endregion #region XFile static void TestXFile() { using
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇After和Insteadof触发器 下一篇Hibernate操作Blob数据

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·请问微信4.0版本xwec (2025-12-24 22:48:42)
·电脑NVIDIA的文件夹 (2025-12-24 22:48:40)
·如何看待微信新版本 (2025-12-24 22:48:37)
·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)