dbfunc.cp

来自「UNIX/LINUX平台下面SMS网管原代码」· CP 代码 · 共 115 行

CP
115
字号
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <memory.h>
#include <sys/types.h>

#include "etc.h"

#include "sybtesql.h"
#include "sybhesql.h"

EXEC SQL INCLUDE SQLCA;

void error_handler();
void warning_handler();
void notfound_handler();

int  DB_connect(char *uid, char *pwd, char *svc);
void DB_close();
void DB_Commit();
void DB_Rollback();

void error_handler()
{
	printf("SQLCODE = %d\n", sqlca.sqlcode);

	if (sqlca.sqlerrm.sqlerrml)
	{
		printf("SQL Server Error:");
		printf("%s\n\n", sqlca.sqlerrm.sqlerrmc);
	}

	return ;
}

void warning_handler()
{
	if (sqlca.sqlwarn[1] == 'W')
	{
		printf("Data truncated.\n");
	}

	if (sqlca.sqlwarn[3] == 'W')
	{
		printf("Insufficient host variables to store results.\n");
	}	

	return;
}

void notfound_handler()
{
	printf("No data found for the query.\n");
	return;
}

int  DB_connect(char *uid, char *pwd, char *svc)
{
	EXEC SQL BEGIN DECLARE SECTION ; 
	char username[64] ;
	char password[64] ;
	char svcname[64];
	EXEC SQL END DECLARE SECTION ;

	EXEC SQL WHENEVER SQLERROR CALL error_handler() ;
	EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;
	EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;

	memset( username, '\0', sizeof( username)) ;
	memset( username, '\0', sizeof( username)) ;
	memset( password, '\0', sizeof( password)) ;

	AllTrim(svc);
	AllTrim(uid);
	AllTrim(pwd);
	pwd[6] = 0;

	strcpy(svcname, svc);
	strcpy(username, uid) ;
	strcpy(password, pwd) ;

	EXEC SQL CONNECT :username IDENTIFIED BY :password USING :svcname;
	if ( sqlca.sqlcode < 0 ) return( sqlca.sqlcode) ;

	EXEC SQL EXECUTE IMMEDIATE "set chained off" ;
	if ( sqlca.sqlcode < 0 ) return( sqlca.sqlcode) ;

	EXEC SQL EXECUTE IMMEDIATE "set transaction isolation level 1" ;
	if ( sqlca.sqlcode < 0 ) return( sqlca.sqlcode) ;

	return( SUCCESS);
}

void DB_close()
{
	EXEC SQL DISCONNECT ALL;
	if( sqlca.sqlcode < 0)
		fprintf(stdout, "DISCONNECT FAILURE!\n");	
	return;
}

void DB_Commit()
{
	EXEC SQL COMMIT TRANSACTION;
	return;
}

void DB_Rollback()
{
	EXEC SQL ROLLBACK TRANSACTION;
	return;
}

⌨️ 快捷键说明

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