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

📄 db_open.ec

📁 界面库
💻 EC
字号:
/*=============================================================
功能: 		打开/关闭数据库  FOR INFORMIX ONLINE
作者:
最后修改人:	
最后修改日期:	
===============================================================*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <errno.h>
#include "mytools.h"
#include "macro_def.h"
$include "db_struct.h"

EXEC SQL INCLUDE sqlca;

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

EXEC SQL WHENEVER SQLERROR CALL error_handler;
EXEC SQL WHENEVER SQLWARNING CALL warning_handler;
EXEC SQL WHENEVER NOT FOUND CALL notfound_handler;
/*================================================
联接并打开数据库

RETURN:		0	SUCC
		-1	FAIL
================================================*/
int dbopen()
{
	$database bcs_db;
	if(sqlca.sqlcode)
	{
		errcall(ERROR, "连接数据库失败[%ld]", SQLCODE);
		return -1;
	}
	return 0;
}
int db_open()
{
	$char	sqlstr[128];
	char	*dp;
	char	*online;
	$char	str1[32];
	$char	username[16];
	$char	passwd[16];
	$char	conn[16];

	dp = getenv("DBNAME");
	if (dp == NULL) {
		errcall("DBNAME没有定义!");
		return -1;
	}

$ifdef REMOTE_DB;
	online = getenv("INFORMIXSERVER");
	if (online == NULL) {
		errcall("INFORMIXSERVER没有定义! 缺省使用ONLINE");
	}
//	sprintf(sqlstr, "CONNECT to dms@ONLINE as conn USER informix USING qwer1234");
	if (online == NULL)
		sprintf(str1, "%s@%s", dp, "ONLINE");
	else
		sprintf(str1, "%s@%s", dp, online);
	sprintf(username, "dmsdb");
	sprintf(passwd, "qwer1234");
	sprintf(conn, "%d", getpid());
	EXEC SQL CONNECT TO :str1 AS 'ttt' USER :username USING :passwd;
	if (SQLCODE) {
		errcall(ERROR, "open db failed(%d)", SQLCODE);
		return -1;
	}
	return 0;
$else;
	sprintf ( sqlstr, "database  %s", dp );

	$prepare open_db from $sqlstr;
	$execute open_db; 
	
	if(SQLCODE) {
		errcall(ERROR, "连接数据库失败[%ld][%s]", SQLCODE,sqlstr);
		return -1;
	}
	return 0;
$endif;

	/****** THE FOLLOWING ARE USED IN SYBASE *******/
/*
	EXEC SQL BEGIN DECLARE SECTION;
	char	username[30];
	char	password[30];
	EXEC SQL END DECLARE SECTION;

	strcpy(username, "dms");
	strcpy(password, "111111");

	EXEC SQL CONNECT :username IDENTIFIED BY :password;
	if(SQLCODE) {
		errcall(ERROR, "connect err [%ld]\n", SQLCODE);
		return -1;
	}

	EXEC SQL USE dms;
	if(SQLCODE) {
		errcall(ERROR, "use nas_db err[%ld]\n",SQLCODE);
		return -1;
	}

	return 0;
*/
}

/*===================================================
关闭数据库
====================================================*/
/*
void db_release()
{
	EXEC SQL RELEASE;
}
*/

int db_close()
{
$ifdef REMOTE_DB;
	EXEC SQL DISCONNECT ALL;
	if(SQLCODE) {
		errcall(ERROR, "DISCONNECT数据库失败![%ld]", SQLCODE);
		return -1;
	}
$else;
	EXEC SQL CLOSE DATABASE;	/* INFORMIX */
	if(SQLCODE) {
		errcall(ERROR, "关闭数据库失败![%ld]", SQLCODE);
		return -1;
	}
$endif;
	return 0;
}

void begin_tran()
{
	EXEC SQL begin work;
	
	if ( SQLCODE ) {
		errcall(ERROR, "不能启动事务处理[%ld]!", SQLCODE);
	}
}

void commit_tran()
{
	EXEC SQL COMMIT work;
	
	if ( SQLCODE ) {
		errcall(ERROR, "确认事务处理失败[%ld]!", SQLCODE);
	}
}

void rollback_tran()
{
	EXEC SQL ROLLBACK work;
	
	if ( SQLCODE ) {
		errcall(ERROR, "回滚事务处理失败[%ld]!", SQLCODE);
	}
}

void error_handler()
{
	if (sqlca.sqlerrm)
	{
		errcall(ERROR, "SQL Server Error: %s ",sqlca.sqlerrm);
	}
	errcall(ERROR, "database operate err! [%ld]!!", SQLCODE);

	return;
}

void warning_handler()
{
/*	if (sqlca.sqlwarn.sqlwarn1 == 'W')
		errcall(WARN, "(warning_handler) Data truncated.");

	if (sqlca.sqlwarn.sqlwarn3 == 'W')
		errcall(WARN, "Insufficient host var for result.");
*/
	if (sqlca.sqlwarn.sqlwarn4 == 'W')
		errcall(WARN, "uses float-to-decimal conv.");

	return;
}

void notfound_handler()
{
	return;
}

int	set_lock_wait ( wait_seconds )
int wait_seconds;
{
$char sqlstr[100];

	sprintf(sqlstr, "set lock mode to wait %d", wait_seconds);
	$prepare set_lock from $sqlstr;
	$execute set_lock; 

	if (SQLCODE) {
		errcall(ERROR, "set lock wait err %d", SQLCODE);
		return -1;
	}
	return 0;
}

⌨️ 快捷键说明

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