📄 db_open.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 + -