ArcSDE SDK Java 快速实践 6

I. 图层锁

· 图层锁的类型和作用

ArcSDE图层中定义了两种锁,SE_READ_LOCK和SE_WRITE_LOCK。锁影响的范围可以是整个图层或者是图层中的某个范围。

当数据以SE_READ_LOCK的方式锁住以后,这部分数据就被保护起来以防止被更新。其它用户也可以在相同的数据上建立SE_READ_LOCK锁,但是不能再加SE_WRITE_LOCK锁或者更新数据。

当数据以SE_WRITE_LOCK的方式锁住以后,这部分数据不但不能被其它用户更新,而且其它用户也不能再在相同的数据上加任何锁。

由此也可以推出,如果在图层上以SE_READ_LOCK方式锁定的数据互相是可以有重叠的,而以SE_WRITE_LOCK方式锁定的数据是不能相互重叠的。

· 使用锁

以下的代码显示了如何在图层上添加和释放锁:

SeConnection conn = getConn();

if (conn != null) {

try {

SeLayer layer = new SeLayer(conn, "SDE_CITIES", "SHAPE");

layer.lock(SeLayer.SE_READ_LOCK);// 以SE_READ_LOCK方式锁定整个图层

layer.freeLock();

layer.lock(SeLayer.SE_WRITE_LOCK);// 以SE_WRITE_LOCK方式锁定整个图层

layer.freeLock();

layer.lockArea(SeLayer.SE_READ_LOCK, new SeExtent(-116, 39,

117, 40));// 以SE_READ_LOCK方式锁定部分数据

layer.freeLock();

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

你可能感兴趣的:(java)