sybfunc.c
上传用户:bilang918
上传日期:2010-03-24
资源大小:558k
文件大小:2k
源码类别:

网络

开发平台:

Unix_Linux

  1. #include <stdio.h>
  2. #include <sybfront.h>
  3. #include <sybdb.h>
  4. #include "./sybfunc.h"
  5. extern char errtxt[1024];
  6. int dberrflag;
  7. int CS_PUBLIC err_handler(DBPROCESS * dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr)
  8. { printf("nerror :%s|n", errtxt);
  9. sleep(1);
  10. dbclose(dbproc);
  11. dberrflag = 1;
  12. if ((dbproc == NULL) || (DBDEAD(dbproc))) return(INT_EXIT);
  13. else return(INT_CANCEL);
  14. }
  15. int CS_PUBLIC msg_handler(DBPROCESS * dbproc, DBINT msgno, int msgstate, int severity, char *msgtext, char *srvname, char*procname, int line)
  16. {
  17. printf("msg=%s", msgtext);
  18. return(0);
  19. }
  20. void db_init(void)
  21. {
  22. /* Initialize DB-Library. */
  23. if (dbinit() == FAIL) return;
  24. dberrhandle((EHANDLEFUNC)err_handler);
  25. dbmsghandle((MHANDLEFUNC)msg_handler);
  26. dbsetversion(DBVERSION_100);
  27. return;
  28. }
  29. int  db_operation(DBPROCESS *dbproc, char *sqlstr)
  30. {
  31.      int retval;
  32.      dbcmd(dbproc, sqlstr);
  33.      retval = (int)dbsqlexec(dbproc);
  34.      return(retval);
  35. DBPROCESS* db_connect(char *dbname,char *usrname,char *usrpwd)
  36. {
  37.      DBPROCESS     *dbproc;
  38.      LOGINREC      *login;
  39.      login = dblogin();
  40.      DBSETLUSER(login, usrname);
  41.      DBSETLPWD(login, usrpwd);
  42.      dbproc = dbopen(login, NULL);
  43.      dbloginfree(login);
  44.      
  45.      if(dbproc!=NULL) dbuse(dbproc, dbname);
  46.      else return(NULL);
  47.      dberrflag = 0;
  48.      db_operation(dbproc,"begin tran");
  49.      return(dbproc);
  50. }
  51. void  db_disconnect(DBPROCESS* dbproc)
  52. {
  53.  db_operation(dbproc,"commit");
  54.  dbclose(dbproc);
  55.  dbexit();
  56. }
  57. /*int  db_operation(DBPROCESS *dbproc, char *sqlstr)
  58. {
  59.      int request=0;
  60.      if(dberrflag == 1) return(1);
  61.      dbcmd(dbproc, sqlstr);
  62.      dbsqlsend(dbproc);
  63.      while(dbsqlok(dbproc) == FAIL){
  64. sleep(1);
  65. return(1);
  66. request++;
  67.    
  68.     if (request = 3) return(1); //db fault
  69.       }
  70.      return(0);
  71. }*/