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

📄 dbinterface.cpp

📁 一个在linux下连接Sybase数据库
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		CS_CHAR PARAM1[80];
		CS_CHAR PARAM2[160];
		CS_CHAR PARAM3[250];
	}Ontime;
    exec sql end declare section;

	memcpy(&Ontime,pOntime,sizeof(Ontime));
	exec sql insert into SapDB.dbo.gsm_ontime (ACCOUNT, SERVICEID, CALLED,CONTENT,SRVPARAM,SENDTIME,CURSRVDT,STARTDT,STOPDT,/*REGISTDT,*/REGIDX,CONTENTTYPE,CALLEDTYPE,SRVTIMES,TIMESLIMIT,RESENDCOUNT,REGSRC,PARAM1,PARAM2,PARAM3) values (:Ontime.ACCOUNT, :Ontime.SERVICEID, :Ontime.CALLED,:Ontime.CONTENT,:Ontime.SRVPARAM,:Ontime.SENDTIME,:Ontime.CURSRVDT,:Ontime.STARTDT,:Ontime.STOPDT,/*:Ontime.REGISTDT,*/:Ontime.REGIDX,:Ontime.CONTENTTYPE,:Ontime.CALLEDTYPE,:Ontime.SRVTIMES,:Ontime.TIMESLIMIT,:Ontime.RESENDCOUNT,:Ontime.REGSRC,:Ontime.PARAM1,:Ontime.PARAM2,:Ontime.PARAM3);
	if(0!=sqlca.sqlcode)
		return sqlca.sqlcode;
    exec sql commit work;
    return sqlca.sqlcode;
}

exec sql declare ReadGSMOntime cursor for select * from SapDB.dbo.gsm_ontime;
int ReadGSMOntime(GSMOntime* pOntime, int isFromBegin,int id)
{
    exec sql begin declare section;
	struct _GSMOntime
	{
		CS_CHAR ACCOUNT[30];
		CS_CHAR SERVICEID[30];
		CS_CHAR CALLED[250];
		CS_CHAR CONTENT[250];
		CS_CHAR SRVPARAM[250];
		CS_CHAR SENDTIME[250];
		CS_CHAR CURSRVDT[19];
		CS_CHAR STARTDT[19];
		CS_CHAR STOPDT[19];
		CS_CHAR REGISTDT[19];
		CS_INT REGIDX;
		CS_INT CONTENTTYPE;
		CS_INT CALLEDTYPE;
		CS_INT SRVTIMES;
		CS_INT TIMESLIMIT;
		CS_INT RESENDCOUNT;
		CS_CHAR REGSRC[30];
		CS_CHAR PARAM1[80];
		CS_CHAR PARAM2[160];
		CS_CHAR PARAM3[250];
	}Ontime;
    exec sql end declare section;

	if(0 != isFromBegin)
    {
		exec sql close ReadGSMOntime;
		exec sql open ReadGSMOntime;
		if(sqlca.sqlcode < 0) return sqlca.sqlcode;
    }
	memset(&Ontime, 0, sizeof(Ontime));
	
   	exec sql fetch ReadGSMOntime into :Ontime.ACCOUNT, :Ontime.SERVICEID, :Ontime.CALLED,:Ontime.CONTENT,:Ontime.SRVPARAM,:Ontime.SENDTIME,:Ontime.CURSRVDT,:Ontime.STARTDT,:Ontime.STOPDT,:Ontime.REGISTDT,:Ontime.REGIDX,:Ontime.CONTENTTYPE,:Ontime.CALLEDTYPE,:Ontime.SRVTIMES,:Ontime.TIMESLIMIT,:Ontime.RESENDCOUNT,:Ontime.REGSRC,:Ontime.PARAM1,:Ontime.PARAM2,:Ontime.PARAM3;
    if(sqlca.sqlcode < 0) return sqlca.sqlcode;
    if(sqlca.sqlcode == 0)
    {
    	memcpy(pOntime,&Ontime,sizeof(*pOntime));
  		return 1;
    }
    else if(sqlca.sqlcode == 100)
    {
    	/*exec sql close ReadGSMOntime;*/
		/*exec sql delete from SapDB.dbo.gsm_ontime;*/
		/*exec sql commit work;*/
		return 0;
    }
    return sqlca.sqlcode;
}

exec sql declare LPGSMRECV cursor for select top 16 * from SapDB.dbo.gsm_recv ORDER BY ser desc;
int ReadGSMRecvTable(LPGSMRECV pNums, int isFromBegin, int id)
{
	exec sql begin declare section;
 	struct _GSMRECV
	{
		CS_CHAR 	wdt[20];	/*//-- 0,插入时间*************************/
		CS_CHAR 	gwdt[20];	/*//-- 1,网关启动时间*********************/
		CS_INT 		port_com;	/*//-- 接收端口(Modem)********************/
		CS_INT 		mtype;		/*//-- 信息类型***************************/
		CS_INT 		portr;		/*//-- 接收端口号*************************/
		CS_CHAR 	dtr[20];	/*//-- 接收时间***************************/
		CS_CHAR 	tel[22];	/*//-- 源手机号码*************************/
		CS_CHAR 	ser[22];	/*//-- 序列号*****************************/
		CS_INT 		count_snd;	/*//-- 已发送次数*************************/
		CS_INT 		ports;		/*//-- 提交端口***************************/
		CS_CHAR 	act[22];	/*//-- 发送者帐号信息*********************/
		CS_INT 		stype;		/*//-- 发送类型:0-普通信息,1-PUSH信息***/
		CS_CHAR 	sser[22];	/*//-- 发送序列号*************************/   
		CS_CHAR 	mess[200]; 	/*//-- 接收内容***************************/
		CS_INT 		test;		/*//-- 测试标记,0-正常,1-测试*************/
  	} GsmRecv;
	exec sql end declare section;
	
 	if(0 != isFromBegin)
    {
		exec sql close LPGSMRECV;
		exec sql open LPGSMRECV;
		if(sqlca.sqlcode < 0) return sqlca.sqlcode;
    }
	memset(&GsmRecv, 0, sizeof(GsmRecv));
	
   	exec sql fetch LPGSMRECV into :GsmRecv.wdt,:GsmRecv.gwdt,:GsmRecv.port_com,:GsmRecv.mtype,:GsmRecv.portr,:GsmRecv.dtr,:GsmRecv.tel,:GsmRecv.ser,:GsmRecv.count_snd,:GsmRecv.ports,:GsmRecv.act,:GsmRecv.stype,:GsmRecv.sser,:GsmRecv.mess,:GsmRecv.test;
    if(sqlca.sqlcode < 0) return sqlca.sqlcode;
    if(sqlca.sqlcode == 0)
    {
    	memcpy(pNums,&GsmRecv,sizeof(*pNums));
  		return 1;
    }
    else if(sqlca.sqlcode == 100)
    {
    	/*exec sql close LPGSMRECV;*/
		return 0;
    }

	return sqlca.sqlcode;
}
int WriteGSMRecvTable(LPGSMRECV pNums)
{
	exec sql begin declare section;
 	struct _GSMRECV
	{
		CS_CHAR 	wdt[20];	/*//-- 0,插入时间*************************/
		CS_CHAR 	gwdt[20];	/*//-- 1,网关启动时间*********************/
		CS_INT 		port_com;	/*//-- 接收端口(Modem)********************/
		CS_INT 		mtype;		/*//-- 信息类型***************************/
		CS_INT 		portr;		/*//-- 接收端口号*************************/
		CS_CHAR 	dtr[20];	/*//-- 接收时间***************************/
		CS_CHAR 	tel[22];	/*//-- 源手机号码*************************/
		CS_CHAR 	ser[22];	/*//-- 序列号*****************************/
		CS_INT 		count_snd;	/*//-- 已发送次数*************************/
		CS_INT 		ports;		/*//-- 提交端口***************************/
		CS_CHAR 	act[22];	/*//-- 发送者帐号信息*********************/
		CS_INT 		stype;		/*//-- 发送类型:0-普通信息,1-PUSH信息***/
		CS_CHAR 	sser[22];	/*//-- 发送序列号*************************/   
		CS_CHAR 	mess[200]; 	/*//-- 接收内容***************************/
		CS_INT 		test;		/*//-- 测试标记,0-正常,1-测试*************/
  	} GsmRecv;
	exec sql end declare section;
	if(pNums)memcpy(&GsmRecv,pNums,sizeof(GsmRecv));
	exec sql insert into SapDB.dbo.gsm_recv values (:GsmRecv.wdt,:GsmRecv.gwdt,:GsmRecv.port_com,:GsmRecv.mtype,:GsmRecv.portr,:GsmRecv.dtr,:GsmRecv.tel,:GsmRecv.ser,:GsmRecv.count_snd,:GsmRecv.ports,:GsmRecv.act,:GsmRecv.stype,:GsmRecv.sser,:GsmRecv.mess,:GsmRecv.test);
	if(0!=sqlca.sqlcode)
		return sqlca.sqlcode;
    exec sql commit work;
    return sqlca.sqlcode;
}
int WriteTest(AlarmsTable *test1)
{
    exec sql begin declare section;
 	struct _AlarmsTable 
 	{
 		CS_CHAR Time[32];
		CS_INT AlarmCode;
		CS_CHAR Info[256];
 	} TAlarms;
    exec sql end declare section;
	sprintf(TAlarms.Time,"%s %s",__DATE__, __TIME__);
	TAlarms.AlarmCode=1;
	memcpy(TAlarms.Info,"Test12342fsdf",14);
	if(test1)memcpy(&TAlarms,test1,sizeof(TAlarms));
	exec sql insert into SapDB.dbo.TBL_Alarms(Time,AlarmCode,Info) values (:TAlarms.Time,:TAlarms.AlarmCode,:TAlarms.Info);
	if(0!=sqlca.sqlcode)
		return sqlca.sqlcode;
    exec sql commit work;
    return sqlca.sqlcode;
}
int WriteStrategyTable(void *test1)
{
    exec sql begin declare section;
 	struct _SendStrategy
 	{
 		CS_INT 			InfoType;
		CS_TINYINT	 	AlarmMode;
		CS_INT			DelayTime;
		CS_INT 			DelayCount;
		CS_CHAR 		MSISDN_AlarmList[128];
 	} Strategy;
    exec sql end declare section;
	memset(&Strategy,0,sizeof(Strategy));
	Strategy.InfoType=1;
	memcpy(Strategy.MSISDN_AlarmList,"13798790145",12);
	Strategy.AlarmMode=0;
	Strategy.DelayTime=100;
	if(test1)memcpy(&Strategy,test1,sizeof(Strategy));
	exec sql insert into SapDB.dbo.TBL_SMSendStrategy(InfoType,AlarmMode,DelayTime,DelayCount,MSISDN_AlarmList) values (:Strategy.InfoType,:Strategy.AlarmMode,:Strategy.DelayTime,:Strategy.DelayCount,:Strategy.MSISDN_AlarmList);
	if(0!=sqlca.sqlcode)
		return sqlca.sqlcode;
    exec sql commit work;
    return sqlca.sqlcode;
}
int WriteRealtimeStatus(RealTimeStatus * pTimeStatus)
{
    exec sql begin declare section;
	struct _RealTimeStatus
	{
			CS_CHAR 		UpdateTime[32];
			CS_CHAR 		NEname[64];
			CS_INT 			NEid;
			CS_INT 			NEavailability;
			CS_FLOAT		NEcpu;
			CS_FLOAT 		NEram;
			CS_FLOAT 		NEhd;
	}TimeStatus;
    exec sql end declare section;
	
	memcpy(&TimeStatus,pTimeStatus,sizeof(TimeStatus));
	TimeStatus.NEcpu=pTimeStatus->NEcpu;
	TimeStatus.NEhd=pTimeStatus->NEhd;
	TimeStatus.NEram=pTimeStatus->NEram;
	exec sql update SapDB.dbo.TBL_RealtimeStatus set UpdateTime=:TimeStatus.UpdateTime,NEavailability=:TimeStatus.NEavailability,NEcpu=:TimeStatus.NEcpu,NEram=:TimeStatus.NEram,NEhd=:TimeStatus.NEhd where NEname=:TimeStatus.NEname and NEid=:TimeStatus.NEid;
	if(0!=sqlca.sqlcode)
		return sqlca.sqlcode;
    exec sql commit work;
    return sqlca.sqlcode;
}

void CommitWork()
{
	exec sql commit work;
}
int DeleteTable()
{
/*	exec sql delete from SapDB.dbo.TBL_Alarms;*/
/*	exec sql commit work;*/
/*	exec sql delete from SapDB.dbo.gsm_recv;*/
/*	exec sql commit work;*/
/*	exec sql delete from SapDB.dbo.gsm_ontime;*/
/*	exec sql commit work;*/
	exec sql TRUNCATE TABLE SapDB.dbo.gsm_recv;
	exec sql commit work;
}

/*
int writeMonitorRecord(stMonitorRecord *pMr)
{
    exec sql begin declare section;
    static struct _stMonitorRecord
    {
		CS_CHAR Time[32];
		CS_CHAR LoginName[20];
		CS_TINYINT Result;
		CS_TINYINT Cause;
		CS_CHAR ListeningParty[24];
		CS_CHAR MonitoredParty[24];
		CS_TINYINT Role;
		CS_INT Duration;
		CS_INT ResourceNo;
		CS_TINYINT ResourceType;
		CS_CHAR OtherParty[24];
    } mnrec;
    exec sql end declare section;

	memcpy(&mnrec, pMr, sizeof(struct _stMonitorRecord));

    exec sql insert into SapDB.dbo.TBL_MonitorCondition (Time, LoginName, Result, Cause, ListeningParty, MonitoredParty, Role, Duration, ResourceNo, ResourceType, OtherParty) values (:mnrec.Time, :mnrec.LoginName, :mnrec.Result, :mnrec.Cause, :mnrec.ListeningParty, :mnrec.MonitoredParty, :mnrec.Role, :mnrec.Duration, :mnrec.ResourceNo, :mnrec.ResourceType, :mnrec.OtherParty);
    
    exec sql commit work;
    return sqlca.sqlcode;
}
*/
/*
int main()
{
	int i;

	strcpy(username,"sybase");
	strcpy(passwd,"joyitjoyit");
	strcpy(servname,"SYBASE");
	
	exec sql connect :username identified by :passwd using :servname;
	printf("connect:%d\n",sqlca.sqlcode);	

	exec sql execute immediate "drop table testtab";
	printf("drop table testtab:%d\n",sqlca.sqlcode);


	exec sql execute immediate "create table testtab(a varchar(128) null,b numeric(18,2) null)";
	printf("create table testtab:%d\n",sqlca.sqlcode);	

	exec sql prepare sqlsa from "insert into testtab(a,b) values(?,?)";
	printf("prepare:%d\n",sqlca.sqlcode);

	for(i = 0;i < 10;i ++){
		sprintf((char *)a.str,"%02d",i);
		a.len = 2;
		b = (i * 100.0 + i) / 100.0;
		exec sql execute sqlsa using :a,:b;
		printf("%d\n",sqlca.sqlcode);
	}	

	exec sql commit work;

	exec sql prepare sqlsa from "select a,b from testtab where a < ?";

	exec sql declare cn cursor for sqlsa;

	exec sql open cn using "05";

	while(1){
		memset(a.str,sizeof(a.str),0);

		exec sql fetch cn into :a,:b;

		if(sqlca.sqlcode != 0){
			break;
		}
	
		a.str[a.len] = 0;
		printf("%s,%18.2f\n",(char *)a.str,b);
	}	
	
	exec sql commit work;

	exec sql close cn;

	exec sql disconnect all;

	return 0;
}
*/

⌨️ 快捷键说明

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