C语言连接并操作Sedna XML数据库的方法

时间:2021-05-20

本文实例讲述了C语言连接并操作Sedna XML数据库的方法。分享给大家供大家参考。具体如下:

#include "libsedna.h" #include "stdio.h" int handle_error(SednaConnection* conn, const char* op, int close_connection) { printf("%s failed: \n%s\n", op, SEgetLastErrorMsg(conn)); if(close_connection == 1) SEclose(conn); return -1; } int main() { struct SednaConnection conn = SEDNA_CONNECTION_INITIALIZER; int bytes_read, res, value; char buf[1024]; value = SEDNA_AUTOCOMMIT_OFF; res = SEsetConnectionAttr(&conn, SEDNA_ATTR_AUTOCOMMIT, (void*)&value, sizeof(int)); res = SEconnect(&conn, "localhost", "test_db", "SYSTEM", "MANAGER"); if(res != SEDNA_SESSION_OPEN) return handle_error(&conn, "Connection", 0); res = SEbegin(&conn); if(res != SEDNA_BEGIN_TRANSACTION_SUCCEEDED) return handle_error(&conn, "Transaction begin", 1); res = SEexecute(&conn, "LOAD 'region.xml' 'region'"); if(res != SEDNA_BULK_LOAD_SUCCEEDED) return handle_error(&conn, "Bulk load", 1); res = SEexecute(&conn, "doc('region')/*/*"); if(res != SEDNA_QUERY_SUCCEEDED) return handle_error(&conn, "Query", 1); while((res = SEnext(&conn)) != SEDNA_RESULT_END) { if (res == SEDNA_ERROR) return handle_error(&conn, "Getting item", 1); do { bytes_read = SEgetData(&conn, buf, sizeof(buf) - 1); if(bytes_read == SEDNA_ERROR) return handle_error(&conn, "Getting item", 1); buf[bytes_read] = '\0'; printf("%s\n", buf); } while(bytes_read > 0); } res = SEexecute(&conn, "DROP DOCUMENT 'region'"); if(res != SEDNA_UPDATE_SUCCEEDED) return handle_error(&conn, "Drop document", 1); res = SEcommit(&conn); if(res != SEDNA_COMMIT_TRANSACTION_SUCCEEDED) return handle_error(&conn, "Commit", 1); res = SEclose(&conn); if(res != SEDNA_SESSION_CLOSED) return handle_error(&conn, "Close", 0); return 0; }

希望本文所述对大家的C语言程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章