【回顾入门教程】使用C#开发SequoiaDB的应用

网友投稿 838 2022-10-30

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

【回顾入门教程】使用C#开发SequoiaDB的应用

本文为SequoiaDB社区用户贡献的文档教程,帮助大家快速入门SequoiaDB适配C#,并进行简单的开发。

安装Microsoft Visual Studio 2017

通过以下网址: https://visualstudio.com/zh-hans/free-developer-offers/ 下载最新版本的Microsoft Visual Studio 2017版本。

调试SequoiaDB自带的Sample Code

了解SequoiaDB的C#接口通过前两步搭建了一个可以使用SequoiaDB的C#的学习环境。下面我们来看看SequoiaDB都提供了哪些C#的API,我们在C#开发过程中,可以通过API可以对SequoiaDB进行哪些操作呢。

获得SequoiaDB的C#的参考文档,可以通过以下三种方式获得。

SequoiaDB : SDB的基本操作。这是SDB的系统配置主要关心的各种API集合。SequoiaDB.Bson:SDB中BSON的数据类型操作 。对SDB中的数据进行操作,这个命名空间中的API接口,是最常用到的。SequoiaDB.Bson.IO:SDB中BSON引擎进行文档读写操作SequoiaDB.Bson.Serialization.*:数据的序列化。

针对SequoiaDB命名空间,看看又细分为哪些API定义类。BaseException:异常的根类,在项目应用中,可以使用这个类捕获系统的异常事件。CollectionSpace:集合空间。这是SDB集合空间对象的创建删除操作。ConfigOptions:SDB系统配置参数对象,主要是变量参数。DataCenter:DBCollection:集合对象的操作。类似于数据库的表操作,这是开发中最经常用到的对象了。DBCursor:数据指针。集合中记录的指针操作。DBLob:SDB独特的特点,针对非结构化数据的块操作。DBQuery:SDB查询语句,需要构建特定查询条件。Domain:SDB域操作Logger:可以引用的日志方法。Node:针对特定节点的连接操作API接口ReplicaGroup:复制分区组对象的操作接口。SDBConst:SDB数据库的一些静态常量。可以通过这些变量获得SDB的一些内置变量值。SDBConst.NodeStatus:SDB状态常量。主要用来显示SDB活动状态。Sequoiadb:SDB数据库对象操作接口,在进行数据库配置的时候比较常用到的类。ServerAddress:SDB是分布式数据库,利用这个对象来设定连接节点的地址信息。

以下的示例代码,最基本的SDB的连接和集合操作。/*******************************************************************************

Name: DEMO.csDescription: This program demostrates how to use the C#.Net Driver This program will also populate some testing data and create indexesNotice: Please add reference of 'sequoiadb.dll' in your project.****************************************************************************/

// Please import namespace SequoiaDB and SequoiaDB.Bsonusing SequoiaDB;using SequoiaDB.Bson;using System;

namespace Sample{class DEMO{

//连接到一个数据库public static void Connect(Sequoiadb sdb){try{// connect to databasesdb.Connect();}catch (Exception e){Console.WriteLine(“Failed to connect to database at {0}:{1}”, sdb.ServerAddr.Host, sdb.ServerAddr.Port);Console.WriteLine(e.Message);Environment.Exit(0);}}

// 断开数据库的连接。 public static void Disconnect(Sequoiadb sdb) { sdb.Disconnect(); } // 获得一个集合空间,如果这个集合空间不存在,创建一个。 public static CollectionSpace GetCollecitonSpace(Sequoiadb sdb, string csName) { CollectionSpace cs = null; try { cs = sdb.GetCollecitonSpace(csName); //用到了SequoiaDB的SequoiaDB对象的根据集合空间名称获得集合空间对象。 } catch (BaseException e) { // verify whether the collection space exists if ("SDB_DMS_CS_NOTEXIST" == e.ErrorType) { // 创建集合空间。 cs = CreateCollecitonSpace(sdb, csName); } else { Console.WriteLine("Failed to get collection space {0},ErrorType = {1}", csName, e.ErrorType); Environment.Exit(0); } } catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(0); } return cs; } // 获得集合。集合不存在的时候,创建一个新的集合。 public static DBCollection GetColleciton(CollectionSpace cs, string cName) { DBCollection dbc = null; try { dbc = cs.GetCollection(cName); } catch (BaseException e) { // verify whether the collection space exists if ("SDB_DMS_CS_NOTEXIST" == e.ErrorType) { cs = CreateCollecitonSpace(cs.SequoiaDB, cs.Name); dbc = GetColleciton(cs, cName); } // verify whether the collection exists else if ("SDB_DMS_NOTEXIST" == e.ErrorType) { // if the collection does not exist, we are going to create one dbc = CreateColleciton(cs, cName); } else { Console.WriteLine("Failed to get collection {0},ErrorType = {1}", cName, e.ErrorType); Environment.Exit(0); } } catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(0); } return dbc; }

//创建集合空间public static CollectionSpace CreateCollecitonSpace(Sequoiadb sdb, string csName){CollectionSpace cs = null;int pageSize = SDBConst.SDB_PAGESIZE_DEFAULT; //这里利用SDB的接口中一个常量。try{cs = sdb.CreateCollectionSpace(csName, pageSize);}catch (BaseException e){// verify whether the collection space existsif (“SDB_DMS_CS_EXIST” == e.ErrorType)cs = GetCollecitonSpace(sdb, csName);// invalid page size argumentelse if (“SDB_INVALIDARG” == e.ErrorType){Console.WriteLine(“Failed to create collection space {0}, invalid page size {1}”, csName, pageSize);Environment.Exit(0);}else{Console.WriteLine(“Failed to create collection space {0},ErrorType = {1}”, csName, e.ErrorType);Environment.Exit(0);}}catch (Exception e){Console.WriteLine(e.Message);Environment.Exit(0);}

return cs; } // 创建并返回一个集合对象 public static DBCollection CreateColleciton(CollectionSpace cs, string cName) { DBCollection dbc = null; try { dbc = cs.CreateCollection(cName); } catch (BaseException e) { // verify whether the collection space exists if ("SDB_DMS_CS_NOTEXIST" == e.ErrorType) { cs = CreateCollecitonSpace(cs.SequoiaDB, cs.Name); dbc = CreateColleciton(cs, cName); } // verify whether the collection space exists else if ("SDB_DMS_EXIST" == e.ErrorType) dbc = GetColleciton(cs, cName); else { Console.WriteLine("Failed to create collection {0},ErrorType = {1}", cName, e.ErrorType); Environment.Exit(0); } } catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(0); } return dbc; }

//创建一条JSON记录static BsonDocument CreateChineseRecord(){BsonDocument obj = new BsonDocument();try{obj.Add(“姓名”, “杰克”);obj.Add(“年龄”, 70);obj.Add(“id”, 2001);

// an embedded bson object BsonDocument phone = new BsonDocument { {"0", "1808835242"}, {"1", "1835923246"} }; obj.Add("电话", phone); } catch (Exception e) { Console.WriteLine("Failed to create record."); Console.WriteLine(e.Message); Environment.Exit(0); } return obj; }

//主函数public static void Main(string[] args){if (args.Length != 1){Console.WriteLine(“Please give the database server address IP:Port”);Environment.Exit(0);}

// The database server address string sdbIP = args[0]; // The collection space name string csName = "SAMPLE"; // The collection name string cName = "employee"; BsonDocument insertor = CreateChineseRecord(); Sequoiadb sdb = new Sequoiadb(sdbIP); //构造SequoiaDB对象 Connect(sdb); CollectionSpace cs = GetCollecitonSpace(sdb, csName); DBCollection dbc = GetColleciton(cs, cName); try { BsonValue id = dbc.Insert(insertor); //集合对象的插入记录的API接口,插入集合中一条记录,然后返回这个记录的oid. Console.WriteLine("Successfully inserted chinese records, object ID = {0}", id.ToString()); } catch (BaseException e) { Console.WriteLine("Failed to insert chinese record, ErrorType = {0}", e.ErrorType); Environment.Exit(0); } catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(0); } Disconnect(sdb); //在开发中,如果不需要对数据库进行操作,一定要断开和数据库的连接来较少资源消耗。 }}

上一篇:地震解释系统三
下一篇:地震解释系统二
相关文章

 发表评论

暂时没有评论,来抢沙发吧~