快速开始
对于大多数 SmartESQL Java 应用程序,主要的类是 Database、SqlLocalConnection 和 SqlResultSet。通常通过调用 Database 的 connectSql()方法来实例化 SqlLocalConnection。然后调用 SqlLocalConnection 方法 executeStatement()来执行 SQL 插入、更新和删除语句。或者可以调用 SqlLocalConnection 方法 insert()来插入数据库类的对象,并且可以调用 currentCursor.update()和 currentCursor.remove()来更新或删除对象。调用方法 executeQuery()来执行一个选择语句并返回一个 SqlResultSet。然后可以使用各种 SqlResultSet 方法来处理结果集。以下部分将逐步介绍构建一个简单的 Java SmartESQL 应用程序的步骤。此外,请注意,有 Java SDK 示例展示了特定的 SmartESQL 功能。
数据库定义
对于 Java 应用程序,使用原生 Java 类语法并应用特殊注释来定义数据库(有关详细说明,请点击此处)。对于此示例应用程序,我们将使用如下定义的模式:
@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 类和内存页大小(内存访问的基本单位)属性,然后调用 open()方法。
要完成此步骤,我们将调用 db.close()方法来终止数据库实例。到目前为止,Program.cs 的示例代码如下所示:
public static void main(String[] args)
{
static final int PAGE_SIZE = 128;
static final int DATABASE_SIZE = 16*1024*1024;
Database db = new Database();
Database.Parameters parameters = new Database.Parameters();
parameters.memPageSize = PAGE_SIZE;
parameters.classes = new Class[]{Person.class};
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 对象是一个数据集,它有许多用于提取结果行和有关列的信息等的方法。但介绍这些细节超出了本快速入门演示的范围。有关详细信息,请参阅 QueryResult 处理,以及 Java SDK 示例中的几个示例。