|
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 |