您的位置:首页 > 编程语言 > Java开发

Sequoiadb 测试体验系列之四 – Java 开发

2014-07-16 15:53 369 查看
上一篇中尝试了一下SequoiaDB的 shell控制台的使用,研究了一下控制台中匹配符、更新符和聚集符的使用。今天尝试一下SequoiaDB官方提供的Java 驱动。

首先要从官方下载驱动程序,按照http://www.sequoiadb.com/document/1.8/developement/application/java/topics/java.html给出的信息搭建开发环境,也就是将jar包加入到工程中。

今天主要尝试了一下Sequoiadb,CollectionSpace,DBCollection(为毛CollectionSpace类名字前面就不加DB...)这几个类给出的基本接口。实现了数据库实例的创建,集合空间的创建,查询,集合的创建,数据的插入,和数据集的插入等一系列操作。完整代码如下:

<span style="font-size:18px;">import java.util.ArrayList;
import java.util.List;

import org.bson.BSONObject;
import org.bson.BasicBSONObject;

import com.sequoiadb.base.CollectionSpace;
import com.sequoiadb.base.DBCollection;
import com.sequoiadb.base.DBCursor;
import com.sequoiadb.base.Sequoiadb;
import com.sequoiadb.exception.BaseException;

public class BlogCollectionSpace {

static String CS_NAME = "test_cs";
static String CL_NAME = "test_cl";

public static void main(String[] args){
String host = "192.168.20.46";
String port = "11810";
String usr = "admin";
String password = "admin";

Sequoiadb sdb = null;

//创建数据库实例
try{
sdb = new Sequoiadb(host+ ":" + port, usr, password);
} catch (BaseException e) {
e.printStackTrace();
System.exit(1);
}

if(sdb.isCollectionSpaceExist(CS_NAME)){
sdb.dropCollectionSpace(CS_NAME);
}

//创建集合空间
CollectionSpace cs = sdb.createCollectionSpace(CS_NAME);

if(sdb.isCollectionSpaceExist(CS_NAME) && cs.getName() == CS_NAME){
System.out.println("The CS " + CS_NAME + "is created");
}else {
System.exit(2);
}

//查询数据库中的集合空间
DBCursor CSList = sdb.listCollectionSpaces();
while (CSList.hasNext()){
String name = (String) CSList.getNext().get("Name");
System.out.println("Collection Space: " + name);
}

if(cs.isCollectionExist(CL_NAME)){
cs.dropCollection(CL_NAME);
}

//创建集合
DBCollection cl = cs.createCollection(CL_NAME);

if(cs.isCollectionExist(CL_NAME) && cl.getName() == CL_NAME){
System.out.println("The Collection " + CL_NAME + " is created");
}else {
System.exit(3);
}

System.out.println("Before inserting one record");
System.out.println("There are " + cl.getCount() + " record(s) in the collection");

BSONObject insertor = null;
insertor = new BasicBSONObject();
BSONObject phone = new BasicBSONObject();
insertor.put("Name", "foo");
insertor.put("Age", 10);
phone.put("home", "123456789");
phone.put("mobile", "987654321");
insertor.put("Phone", phone);

//插入包含记录的BSONObject
cl.insert(insertor);
System.out.println("After inserting one record");
System.out.println("There are " + cl.getCount() + " record(s) in the collection");

System.out.println("Before inserting 5 records");
System.out.println("There are " + cl.getCount() + " record(s) in the collection");

List<BSONObject> list = null;

//创建一个包含五条记录的数据集
try {
list = new ArrayList<BSONObject>(5);
for (int i = 0; i < 5; i++) {
BSONObject obj = new BasicBSONObject();
BSONObject addressObj = new BasicBSONObject();
BSONObject phoneObj = new BasicBSONObject();

addressObj.put("city", "foo");
addressObj.put("province", "bar");

phoneObj.put("Type", "Office");
phoneObj.put("Number", "88888888");

obj.put("name", "test");
obj.put("Id", i);
obj.put("Phonenumber", phoneObj);
obj.put("Address", addressObj);

list.add(obj);
}
} catch (Exception e) {
System.out.println("Failed to create name list record.");
e.printStackTrace();
}

//在集合中插入数据集
cl.bulkInsert(list, 1);

System.out.println("After inserting 5 record");
System.out.println("There are " + cl.getCount() + " record(s) in the collection");
}
}
</span>


在运行上面的代码前,通过控制台shell查看一下数据库的状态:

<span style="font-size:18px;">> db.listCollectionSpaces()
Return 0 row(s).
Takes 0.1100s.
> db.listCollections()
Return 0 row(s).
Takes 0.1139s.</span>


可以看出这是一个空数据库,没有任何集合空间和集合。运行代码,程序的输出为:

<span style="font-size:18px;">The CS test_csis created
Collection Space: test_cs
The Collection test_cl is created
Before inserting one record
There are 0 record(s) in the collection
After inserting one record
There are 1 record(s) in the collection
Before inserting 5 records
There are 1 record(s) in the collection
After inserting 5 record
There are 6 record(s) in the collection
</span>


可以看出,上面的代码在空数据库中创建了一个名为test_cs的集合空间,一个名为test_cl的集合,并分两次在集合中分别插入了1条和5条记录,总共6条记录。

最后,利用控制台shell查询一下数据库的情况:

<span style="font-size:18px;">> db.listCollectionSpaces()
{
"Name": "test_cs"
}
Return 1 row(s).
Takes 0.1291s.
> db.listCollections()
{
"Name": "test_cs.test_cl"
}
Return 1 row(s).
Takes 0.1441s.
> testcs = db.getCS("test_cs")
localhost:11810.test_cs
Takes 0.1385s.
> testcl = testcs.getCL("test_cl")
localhost:11810.test_cs.test_cl
Takes 0.8262s.
> testcl.find()
{
"_id": {
"$oid": "53c621d0c5d00bea55f5a959"
},
"Age": 10,
"Name": "foo",
"Phone": {
"home": "123456789",
"mobile": "987654321"
}
}
{
"_id": {
"$oid": "53c621939c74ef081d3e7d83"
},
"Address": {
"city": "foo",
"province": "bar"
},
"Id": 3,
"Phonenumber": {
"Number": "88888888",
"Type": "Office"
},
"name": "test"
}
{
"_id": {
"$oid": "53c621939c74ef081d3e7d81"
},
"Address": {
"city": "foo",
"province": "bar"
},
"Id": 1,
"Phonenumber": {
"Number": "88888888",
"Type": "Office"
},
"name": "test"
}
{
"_id": {
"$oid": "53c621939c74ef081d3e7d84"
},
"Address": {
"city": "foo",
"province": "bar"
},
"Id": 4,
"Phonenumber": {
"Number": "88888888",
"Type": "Office"
},
"name": "test"
}
{
"_id": {
"$oid": "53c621939c74ef081d3e7d82"
},
"Address": {
"city": "foo",
"province": "bar"
},
"Id": 2,
"Phonenumber": {
"Number": "88888888",
"Type": "Office"
},
"name": "test"
}
{
"_id": {
"$oid": "53c621939c74ef081d3e7d80"
},
"Address": {
"city": "foo",
"province": "bar"
},
"Id": 0,
"Phonenumber": {
"Number": "88888888",
"Type": "Office"
},
"name": "test"
}
Return 6 row(s).
Takes 0.3921s.</span>


现在的数据空中有了刚刚插入的test_cs集合空间,test_cl集合,和刚刚分两次插入的6条数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: