快速开始
注
仅适用于 Windows 系统上的 .NET Framework 4.x 和 .NET 8(原 .NET Core)。
大多数 SmartESQL C# 应用程序的主要类是 Database、SqlLocalConnection 和 SqlResultSet。通常通过调用 Database 的 ConnectSql() 方法来实例化 SqlLocalConnection。然后调用 SqlLocalConnection 方法 ExecuteStatement() 来执行 SQL 插入、更新和删除语句。或者,可以调用 SqlLocalConnection 方法 Insert() 来插入数据库类的对象,并且可以调用 CurrentCursor.Update() 和 CurrentCursor.Remove() 来更新或删除对象。调用方法 ExecuteQuery() 来执行一个选择语句并返回一个 SqlResultSet。然后可以使用各种 SqlResultSet 方法来处理结果集。以下部分将逐步介绍构建一个简单的 C# SmartESQL 应用程序的步骤。此外,请注意,有 C# SDK 示例展示了特定的 SmartESQL 功能。
数据库定义
对于 C# 应用程序,使用原生 C# 类语法并应用特殊属性来定义数据库(详细解释见此处)。对于此示例应用程序,我们将使用如下定义的模式:
[Persistent(AutoID = true)]
class Person
{
[Indexable(Type = Database.IndexType.BTree, Unique = true)]
public String name;
public unsigned int ordinal;
}
打开数据库
为了打开数据库,我们首先实例化一个 Database 对象 db,以便调用其 Open() 方法。Database 类有许多构造函数。对于此示例,我们使用默认构造函数。Database 类的 Open() 方法有三个重载;我们将调用允许我们为内存数据库指定以下属性的版本:
- 名称 - 标识数据库的字符串
- 参数 - 一个 DatabaseParameters 对象(见下文解释)
- 大小 - 数据库可用的总内存量
DatabaseParameters 类有许多属性。属性 Classes 必须使用要存储在数据库中的类数组进行初始化。对于此示例,只有 Person 类。在以下代码片段中,我们实例化 Database 对象,定义 DatabaseParameters 的 Classes 和内存页面大小(内存访问的基本单位)属性,然后调用 Open() 方法。
要完成此步骤,我们将调用 db.Close() 方法来终止数据库实例。到目前为止,Program.cs 的示例代码如下所示:
public static void Main(String[] args)
{
const int PAGE_SIZE = 128;
const int DATABASE_SIZE = 16*1024*1024;
Database db = new Database();
Database.Parameters parameters = new Database.Parameters();
parameters.MemPageSize = PAGE_SIZE;
parameters.Classes = new Type[]{typeof(Person)};
db.Open("PersonDb", parameters, DATABASE_SIZE);
// Do database processing
db.Close();
}
填充和查询数据库
若要使用 SQL 填充数据库,请实例化一个 SqlLocalConnection 对象,并按如下方式调用其 ExecuteStatement() 方法:
SqlLocalConnection con = db.ConnectSql();
con.ExecuteStatement("insert into Person values('Luke Skywalker', 0)");
con.ExecuteStatement("insert into Person values('Han Solo', 1)");
然后,为了查询数据库,我们调用 SqlLocalConnection 的 ExecuteQuery() 方法来实例化一个 SqlResultSet 对象 result:
SqlResultSet result = con.ExecuteQuery("select * from Person") );
处理查询结果
从 ExecuteQuery() 方法返回的 SqlResultSet 对象是一个数据集,它有许多用于提取结果行和列信息等的方法。但介绍这些细节超出了本快速入门演示的范围。有关详细信息,请参阅查询结果处理,以及 C# SDK 示例中的几个示例。