使用序列数据
Java 的 Sequence 类用于管理数据库中类型为序列的字段。由于序列实际上是值的向量,因此通过迭代器来访问它们。在 C 应用程序中使用 C 类型 mco_seq_iterator_h 的地方,在 Java 应用程序中则由 Java 类 Sequence 来承担相同的角色。Sequence 类还提供了一组强大的分析方法,用于对序列执行数学和统计运算。
在 Java 中插入和更新序列
通常,序列数据是使用 Java 的 Sequence 方法 append() 来插入的。例如,考虑以下模式定义:
@Persistent
public class Quote {
@Indexable(unique=true)
@Dimensiohn(21)
String symbol;
@Sequence(type=Sequence.Type.UInt4, order=Sequence.Order.Ascending)]
OrderedSequence day;
[Sequence(type=Sequence.Type.Float)]
UnorderedSequence price;
};
有了这个类定义,Quote 序列字段 day 和 price 就可以用如下代码进行填充:
con.startTransaction(Database.TransactionType.ReadWrite);
Quote q = new Quote();
q.symbol_= "IBM";
con.insert(q);
q.day.append(new int[] { 1, 2, 4, 5 });
q.price.append(new float[] { 10, 20, 40, 50 });
con.commitTransaction();
有时可能需要向有序的时间序列中插入值。可以使用 Sequence 方法 insert() 将值插入到现有序列中。例如,以下代码片段查找具有符号“IBM”的 Quote 对象,然后插入日期和价格值:
con.startTransaction(Database.TransactionType.ReadWrite);
Cursor<Quote> cursor = new Cursor<Quote>(con, Quote.class, "symbol");
Quote q = cursor.find("IBM");
long pos = q.day.search(3, OrderedSequence.Boundary.Exclusive,
0, OrderedSequence.Boundary.Open).firstPosition();
q.day.insert(pos, new int[] { 3 });
q.price.insert(pos, new float[] { 30 });
con.commitTransaction();
另请参阅:Java 本地接口(JNI)数据库管理系统。