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

本文介绍了使用SequoiaDB官方Java驱动进行开发的经验,包括下载驱动、搭建环境、创建数据库实例、集合空间、集合,以及执行查询和数据插入操作。通过示例代码展示了完整的流程。
摘要由CSDN通过智能技术生成

上一篇中尝试了一下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条数据。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值