sybfunc.c
上传用户:bilang918
上传日期:2010-03-24
资源大小:558k
文件大小:2k
- #include <stdio.h>
- #include <sybfront.h>
- #include <sybdb.h>
- #include "./sybfunc.h"
- extern char errtxt[1024];
- int dberrflag;
- int CS_PUBLIC err_handler(DBPROCESS * dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr)
- { printf("nerror :%s|n", errtxt);
- sleep(1);
- dbclose(dbproc);
- dberrflag = 1;
- if ((dbproc == NULL) || (DBDEAD(dbproc))) return(INT_EXIT);
- else return(INT_CANCEL);
- }
- int CS_PUBLIC msg_handler(DBPROCESS * dbproc, DBINT msgno, int msgstate, int severity, char *msgtext, char *srvname, char*procname, int line)
- {
- printf("msg=%s", msgtext);
- return(0);
- }
- void db_init(void)
- {
- /* Initialize DB-Library. */
- if (dbinit() == FAIL) return;
- dberrhandle((EHANDLEFUNC)err_handler);
- dbmsghandle((MHANDLEFUNC)msg_handler);
- dbsetversion(DBVERSION_100);
- return;
- }
- int db_operation(DBPROCESS *dbproc, char *sqlstr)
- {
- int retval;
- dbcmd(dbproc, sqlstr);
- retval = (int)dbsqlexec(dbproc);
- return(retval);
- }
- DBPROCESS* db_connect(char *dbname,char *usrname,char *usrpwd)
- {
- DBPROCESS *dbproc;
- LOGINREC *login;
- login = dblogin();
- DBSETLUSER(login, usrname);
- DBSETLPWD(login, usrpwd);
- dbproc = dbopen(login, NULL);
- dbloginfree(login);
-
- if(dbproc!=NULL) dbuse(dbproc, dbname);
- else return(NULL);
- dberrflag = 0;
- db_operation(dbproc,"begin tran");
- return(dbproc);
- }
- void db_disconnect(DBPROCESS* dbproc)
- {
- db_operation(dbproc,"commit");
- dbclose(dbproc);
- dbexit();
- }
- /*int db_operation(DBPROCESS *dbproc, char *sqlstr)
- {
- int request=0;
- if(dberrflag == 1) return(1);
- dbcmd(dbproc, sqlstr);
- dbsqlsend(dbproc);
- while(dbsqlok(dbproc) == FAIL){
- sleep(1);
-
- return(1);
- request++;
-
- if (request = 3) return(1); //db fault
- }
- return(0);
- }*/