⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbinterface.hpp

📁 一个在linux下连接Sybase数据库
💻 HPP
字号:
#ifndef _DB_INTERFACE_H_
#define _DB_INTERFACE_H_

#define _MULTITHREAD_SUPPORT_
#undef	_MULTITHREAD_SUPPORT_

#ifdef	_MULTITHREAD_SUPPORT_
#include <pthread.h>
#include <asm/atomic.h>
#include <string.h>
#endif
typedef struct RealTimeStatus
{
	char 		UpdateTime[32];
	char 		NEname[64];
	int 		NEid;
	int 		NEavailability;
	float		NEcpu;
	float 		NEram;
	float 		NEhd;
}RealTimeStatus;
typedef struct AlarmsTable
{
	char  DateTime[32];
    struct AlarmCode
    {
      /* 告警分类*/
      unsigned long type : 4;
      /* 告警代码*/
      unsigned long code : 8;
      /*告警级别*/
      unsigned long level : 2;
      /*告警设备名称*/
      unsigned long nename : 4;
      /* 告警设备编号*/
      unsigned long neid : 4;
      /*导致告警具体板卡、端口等*/
      unsigned long nesub : 8;
      /* 备用*/
      unsigned long spare : 2;
    }AlarmCode;
	char Info[256];
}AlarmsTable;
typedef struct SendStrategy
{
	int InfoType;
	char AlarmMode;
	int DelayTime;
	int DelayCount;
	char MSISDN_AlarmList[128];
}SendStrategy;
typedef struct SMSendRecord
{
	int AlarmCode;
	char SendTime[32];
	int InfoType;
	char Info[256];
}SMSendRecord;
typedef struct GSMOntime
{
	char ACCOUNT[30];		/***--0,计费号码****/
	char SERVICEID[30];		/***---1,接入号****/
	char CALLED[250];		/***----2,被叫号****/
	char CONTENT[250];		/***----3,内容***/
	char SRVPARAM[250];		/***---4,服务参数****/
	char SENDTIME[250];		/***- --5,发送时间****/
	char CURSRVDT[19];		/***----6,本次服务时间****/
	char STARTDT[19];		/***----7,服务起始时间****/
	char STOPDT[19];		/***----8,服务截止时间****/
	char REGISTDT[19];		/**--9,登记时间***/
	int REGIDX;			/***--********/
	int CONTENTTYPE;		/***--11,内容类型****/
	int CALLEDTYPE;			/***--12,被叫类型****/
	int SRVTIMES;			/***--13,当前服务次数***/
	int TIMESLIMIT;			/***--14,服务次数限制***/
	int RESENDCOUNT;		/***--15,失败重发次数限制****/
	char REGSRC[30];		/***--16,登记来源***/
	char PARAM1[80];		/***--17,参数1***/
	char PARAM2[160];		/***--18,参数2****/
	char PARAM3[250];		/***--19,参数3****/
}GSMOntime;
typedef struct GSMRECV
{
	char wdt[20];	//-- 0,插入时间
	char gwdt[20];	//-- 1,网关启动时间
	int port_com;	//-- 接收端口(Modem)  
	int mtype;		//-- 信息类型
	int portr;		//-- 接收端口号
	char dtr[20];	//-- 接收时间
	char tel[22];	//-- 源手机号码
	char ser[22];	//-- 序列号
	int count_snd;	//-- 已发送次数
	int ports;		//-- 提交端口
	char act[22];	//-- 发送者帐号信息
	int stype;		//-- 发送类型:0-普通信息,1-PUSH信息
	char sser[22];	//-- 发送序列号   
	char mess[200];	//-- 接收内容
	int test;		//-- 测试标记,0-正常,1-测试
}*LPGSMRECV,GSMRECV;
#ifdef __cplusplus
extern "C"{
#endif

/*
*  function    : 建立数据库连接
*  uname	   : 用户名
*  pwd         : 密码
*  srv         : 服务器名
*  return value: >0 调用成功,返回值为为该连接分配的ID值;1 调用失败。getLastError() 获取详细的失败原因。
*  note        : 
*/
int connectDb(char *uname, char *pwd, char *srv);

/*
*  function    : 断开连接
*  id		   : id = 0 断开所以连接;否则断开指定连接(id为调用connectDb的返回值)
*  return value: 0调用成功;1 调用失败。getLastError() 获取详细的失败原因。
*  note        : 
*/
int disconnectDb(int id); 

/*
*  function    : 向TBL_ATDR表中插入一条记录
*  pATDR       : 指向stACDR结构的指针,必须是一个有效指针。
*  id		   : id = 0 在当前连接上执行操作;否则在指定的连接上执行操作(id为调用connectDb的返回值)	
*  return value: 0调用成功;1 调用失败。getLastError() 获取详细的失败原因。
*  NOTE        : 该函数是不可重入的,不能在多线程中调用。TODO: 多线程支持
*/

/*
*  function    : 向TBL_ACDR表中插入一条记录
*  pACDR       : 指向stACDR结构的指针,必须是一个有效指针。
*  return value: 0调用成功;1 调用失败。getLastError() 获取详细的失败原因。
*  NOTE        : 该函数是不可重入的,不能在多线程中调用。TODO: 多线程支持
*/

/*
*  function    : 向TBL_EventIndex表中插入一条记录
*  pEvt        : 指向stEvtIndex结构的指针,必须是一个有效指针。
*  return value: 0调用成功;1 调用失败。getLastError() 获取详细的失败原因。
*  NOTE        : 该函数是不可重入的,不能在多线程中调用。TODO: 多线程支持
*/

/* 
*  function    : 向TBL_SMDR表中插入一条记录
*  pSMDR       : 指向stASMDR结构的指针,必须是一个有效指针。
*  id		   : id = 0 在当前连接上执行操作;否则在指定的连接上执行操作(id为调用connectDb的返回值)
*  return value: 0调用成功;1 调用失败。getLastError() 获取详细的失败原因。
*  NOTE        : 该函数是不可重入的,不能在多线程中调用。TODO: 多线程支持
*/

/*
*  function    : 读取TBL_MonitorCondition表
*  pCnd        : 指向stMonitorCondition结构的指针,必须是一个有效指针,如果函数调用成功,则该指针
*                指向的结构用从数据库中读取到的值填充。
*  id		   : id = 0 在当前连接上执行操作;否则在指定的连接上执行操作(id为调用connectDb的返回值)	
*  isFromBegin : 非0表示重新从头开始读取记录;0表示接着上次继续读取下一条记录。
*  return value: < 0 调用失败;0 调用成功,但没有记录返回;1 调用成功,有记录返回
*  note        : 该函数是不可重入的,不能用于多线程调用。TODO: 多线程支持
*  example     :
*
*  int ret = readMonitorCndtn(pCnd, 1);
*  if(ret < 0)
*  {
*     handle_error(); // 出错处理
*  }
*  else if(ret == 0)
*  {
*     return;         //没有记录返回
*  } 
*  else if(ret > 0)
*  {
*     handle_data();  // 处理记录	
*     while(1)
*     {
*	     ret = readMonitorCndtn(pCnd, 0); // 读取下一条记录
*		 if(ret < 0)
*	     {
*			 handle_error();
*			 break;
*		 }
*		 else if(ret == 0)
*	     {
*			 break; //
*		 }
*		 else if(ret > 0)
*	     {
*			 handle_data();
*		 }
*     }
*  }
*/
/**********************************************/
int readAlarmsTable(AlarmsTable* pNums, int isFromBegin, int id);
int ReadSMSendStrategy(SendStrategy* pNums, int isFromBegin, int id);
int ReadSMSendRecord(SMSendRecord* pNums, int isFromBegin, int id);
int WriteSendRecord(SMSendRecord* Record, int id);
int GetAlarmsInfo(SendStrategy* pNums, int isFromBegin, int id);
//写易新数据库,发短信
int SendGSMOntime(GSMOntime* pOntime, int id);
int ReadGSMRecvTable(LPGSMRECV pNums, int isFromBegin, int id);

char* getLastError();
void CommitWork();
int WriteTest(AlarmsTable *test1);
int WriteStrategyTable(void *test1);
int ReadGSMOntime(GSMOntime* pOntime, int isFromBegin,int id);
int WriteGSMRecvTable(LPGSMRECV pNums);
int DeleteTable();
int WriteRealtimeStatus(RealTimeStatus * pTimeStatus);

#ifdef __cplusplus
};
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -