C language to connect and manipulate Sedna XML database methods

  • 2020-04-02 03:05:43
  • OfStack

This article illustrates how C connects and operates Sedna XML databases. Share with you for your reference. The details are as follows:


#include "libsedna.h" 
#include "stdio.h" 
int handle_error(SednaConnection* conn, 
         const char* op, 
         int close_connection) { 
  printf("%s failed: n%sn", 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("%sn", 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; 
}

Hope that the article described in the C programming language for you to help.


Related articles: