亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > DB2 > 正文

用Cygwin模擬DB2的Unix/Linux開發環境(2)

2024-09-06 23:58:01
字體:
來源:轉載
供稿:網友
執行初始化了db2環境的cygwin  點擊桌面上的cygwin圖標,可以進入cygwin模擬的linux..   現在,該環境不能執行db2命令,因為沒有作db2cmd初始化環境。     為了能在該環境中使用db2,必須先運行db2cmd然后在db2的命令行環境下進入cygwin測試,是否能在cygwin環境下使用db2命令。ok,到目前為止,我們已經擁有了一個和unix一樣的環境,并且能使用db2下一步我們來寫第一個sqc程序. 編寫sqc程序   編寫一個簡單程序測試,該程序主要完成,讀取系統時間,并打印。程序主要部分為:           if (connectdatabase(sdbname,susername,spasswd)<0)   /*連接數據庫*/      {             printf("連接數據庫失敗/n");             return -1;      }      printf("連接數據庫成功!/n");                                                        exec sql select char(current timestamp)               into :sdatetime               from (values 1) as a;              if dataerror       {              disconnectdb();              return -1;       }       printf("當前時間%s/n",sdatetime);       disconnectdb(); (完整程序建附件)該程序在unix主機下能編譯執行。前面說過,建立這個環境的主要意義在于方便代碼移植。所以,代碼本身不用作任何更改即可在cygwin環境下編譯。修改編譯參數       安裝過程中已經說明cygwin環境下,支持大部分unix/linux命令并且安裝了gcc的編譯器,windows平臺和unix平臺下的庫略有不同,gcc和我們在windows下常用的vc編譯器參數也略有不同,下面簡要說明。1、  在unix環境中,分為靜態庫和動態庫,它們的擴展名分別是 .a 和 .so .2、  在windows中,靜態庫擴展名為 .lib 動態庫擴展名為 .dll3、  unix下,sqc程序編譯時必須鏈接 libdb2.so庫,也就是加上 -ldb2參數(忽略lib和擴展名,這是unix下c編譯器特點)4、  windows下,sqc程序必須鏈接db2api.lib靜態庫。雖然有上述不同,但是我們的修改卻非常少,本例中使用了以前我為編譯sqc寫的makefile模板。在makefile中真正需要修改的只有一行將libs= -l$(db2path)/lib -l$(db2path)/lib/db2修改為libs= -l $(db2path)/lib $(db2path)/lib/db2api.lib當然,你還需要更具環境的不同,修改makefile的其他部分,比如db2path的值啊,這些就是在不同的主機上也需要修改的,并不是windows和unix的區別,不在本文的討論之列。 運行測試程序cygwin使用windows文件系統,進入cygwin環境后 系統的根目錄/其實就是你的cygwin安裝目錄。用戶目錄通常在/home/user,(user是你windows的用戶名)  比如在windows環境中我的cygwin安裝在d:/cygwin 我的用戶目錄是 d:/cygwin/home/rocfu,,如果你在cygwin中使用pwd命令察看當前路徑,會顯示/home/roc. 在用戶目錄下新建db2test子目錄,附件附帶文件 makefile  test.sqc,將這三個文件復制到db2test目錄.修改 test.sqc中的下面代碼       strcpy(susername,"db2admin");      strcpy(spasswd,"db2admin");      strcpy(sdbname,"dwctrldb");為你自己的服務器連接(為簡化測試程序,這里并沒有從配置文件中讀取連接信息)執行命令 make all你會發現編譯的結果竟然是一個exe文件,對了,這是在windows下編譯的程序,當然是一個exe文件了。ok 執行該程序,運行結果如下圖總結       完成上述步驟之后,我們有了一個仿真的unix環境,能通過makefile中的小小改動,將源代碼在各種平臺上編譯,當你不能連上主機工作時,完全可以用這個小巧的環境暫時代用。這個環境具有unix/linux高級特性,對于信號、管道、多進程、守護進程完全支持。    還有更重要的,如果希望這個程序在windows下脫離cygwin環境運行,只要把cygwin1.dll復制到windows的system32目錄下即可,這樣,你得程序在一套源碼的情況下,支持兩個環境,何樂而不為。事實上,很多從linux移植到windows的程序就是這么干的。 附件makefile.suffixes: .sqc .c .o gcc=gcccc=gcc  embprep=embprep  ccflags=-g -mno-cygwin   cflags= $(extra_cflags) -i$(db2path)/include -mno-cygwin db2path=/cygdrive/d/db2/sqllib#libs= -l$(db2path)/lib -l$(db2path)/lib/db2 libs= -l $(db2path)/lib $(db2path)/lib/db2api.lib uid=db2adminpwd=db2admindb=dwctrldb billhome=.billbin=.billsrc=$(billhome)billobj=$(billhome)billlib=../lib include=-i. -i$(billhome)/src -i$(billlib) /       -i$(db2path)/include /       -i/usr/lib -i/usr/local/include /       -i/usr/include               target1 = $(billbin)/test  all:$(target1) .sqc.o:       db2 connect to $(db) user $(uid) using $(pwd);/       db2 prep $*.sqc bindfile;/       db2 bind $*.bnd;/       db2 connect reset;/       db2 terminate;/       $(cc) $(include) -o $*.o -c $(ccflags) $(cflags) $(defs)  $*.c ; .c.o:       $(cc) $ (include) -o $*.o -c $(ccflags) $(cflags) $(libs) $(defs) $*.c --def tandard.def        pick_objs1= $(billsrc)/test.o $(billbin)/test:    $(comm_objs) $(pick_objs1)              $(cc) $(cflags) -o $(target1)  $(pick_objs1) $(comm_objs) $(oracle_lib)$(linkflag) $(libs)   clean:       rm -f *.o $(target1) test.c test.o test.bnd test.sqc/**********************************************************************************                 文件名:test.sqc    創建人: roc.fu   日期  2004-03-07  版 本:v1.0         功 能:讀取系統當前時間                                             描 述:**********************************************************************************/#include <stdio.h>#include <sql.h>#include <sqlenv.h>#include <sqlda.h>#include <sqlca.h>#include <sqladef.h>#include <sqlenv.h> struct sqlca sqlca;char gusername[20];char gpassword[20];char gservername[20];char gtpassword[20]; #ifndef dataerror#define dataerror   (sqlca.sqlcode<0 )#endif   /************************************************************************************     功能 :連接數據庫   *        返回值 :0 正常連接  -1 連接失敗*        參數: sdbalias 數據庫名*              suser    用戶名*              spasswd  密碼***********************************************************************************/int connectdatabase (char *sdbalias,char *suser,char *spasswd){    int        rc = 0;    char       smsg[1024];         exec sql begin declare section ;        char db[15] ;        char userid[15] ;         char passwd[15] ;     exec sql end declare section;     memset(smsg,0,1024);    printf("1/n");    strcpy( db, sdbalias) ;    strcpy( userid, suser) ;        strcpy( passwd, spasswd) ;        if ( strlen(userid) == 0)    {        printf("2/n");     exec sql connect to :db;     }    else     {              printf("用戶名:%s/n",userid);           printf("密碼:%s/n",passwd);           printf("密碼:%s/n",db);                      exec sql connect to :db user :userid using :passwd;         printf("4/n");     }        return 0; } /************************************************************************************                   斷開數據庫連接************************************************************************************/void disconnectdb(){       exec sql connect reset;}  int main(int argc, char *argv[]) {      int iret;                exec sql begin declare section;            char susername[100];          char spasswd[100];          char sdbname[100];          char sdatetime[100];        exec sql end declare section;              printf("start read config.../n");       strcpy(susername,"db2admin");      strcpy(spasswd,"db2admin");      strcpy(sdbname,"dwctrldb");              if (connectdatabase(sdbname,susername,spasswd)<0)   /*連接數據庫*/      {             printf("連接數據庫失敗/n");             return -1;      }      printf("連接數據庫成功!/n");                                                        exec sql select char(current timestamp)               into :sdatetime               from (values 1) as a;              if dataerror       {              disconnectdb();              return -1;       }       printf("當前時間%s/n",sdatetime);       disconnectdb();       printf("完成/n");       return 0;} 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品yw在线观看| 国产精品久久久久av| 欧美一级免费看| 91精品国产91| 国产精品一香蕉国产线看观看| 粗暴蹂躏中文一区二区三区| 欧美中文在线视频| 欧美色视频日本版| 久久久久久久久久久91| 91最新在线免费观看| 久久99视频免费| 欧美黑人性猛交| 国产成人福利视频| 555www成人网| 欧美激情精品久久久久久免费印度| 亚洲男人天堂久| 91在线精品播放| 亚洲xxxx做受欧美| 国产精品欧美日韩| 岛国视频午夜一区免费在线观看| 亚洲第一页中文字幕| 日韩精品免费一线在线观看| 91成人免费观看网站| 国产精品偷伦一区二区| 国产精品香蕉av| 欧美高清视频在线观看| 亚洲精品永久免费| 国产97在线|亚洲| 亚洲福利在线看| 日韩在线视频线视频免费网站| 日本国产精品视频| 亚洲a成v人在线观看| 亚洲精品女av网站| 欧美一区二三区| 久久av在线看| www.日韩免费| www国产亚洲精品久久网站| 国产视频欧美视频| 自拍偷拍免费精品| 久久久久久久久电影| 日韩经典中文字幕在线观看| 亚洲成色999久久网站| 国产成人免费av| 色青青草原桃花久久综合| 久久中文久久字幕| 午夜精品久久久久久久男人的天堂| 成人福利免费观看| 国产精品久久久| 欧美日韩一二三四五区| 久久久久免费精品国产| 亚洲欧美色婷婷| 97精品欧美一区二区三区| 91免费视频国产| 国产在线精品成人一区二区三区| 综合网日日天干夜夜久久| 亚洲第一av在线| 亚洲最大av网| 国产精品视频yy9099| 亚洲免费av片| 国产999精品久久久影片官网| 欧美中文字幕视频| 欧美日韩国产激情| 成人亚洲欧美一区二区三区| 亚洲女人天堂成人av在线| 欧美第一淫aaasss性| 精品欧美一区二区三区| 国产精品99久久久久久久久久久久| 亚洲性猛交xxxxwww| 国产精品人人做人人爽| 日韩视频欧美视频| 国产视频在线一区二区| 日韩欧美在线看| 国产亚洲精品久久久久动| 欧美一区二区三区四区在线| 欧美巨大黑人极品精男| 日韩中文字幕久久| 国产精品自拍偷拍| 成人激情视频在线播放| 国产精品xxx视频| 国产一区二区三区日韩欧美| 欧美性xxxxxx| 欧美视频一二三| 精品国产区一区二区三区在线观看| 美女久久久久久久| 亚洲精品国产精品乱码不99按摩| 欧美日韩中文字幕| 亚洲自拍小视频免费观看| 久久精品国产一区二区电影| 日韩精品免费一线在线观看| 亲爱的老师9免费观看全集电视剧| 久久久久国色av免费观看性色| 欧美激情精品久久久久久大尺度| 一区二区三区 在线观看视| 久久精品国产精品亚洲| 午夜精品一区二区三区视频免费看| 亚洲午夜精品久久久久久久久久久久| 国内偷自视频区视频综合| 国产免费观看久久黄| 亚洲精品综合久久中文字幕| 久久久久久亚洲精品| 国内免费精品永久在线视频| 国产一区二区三区免费视频| 国产精品欧美亚洲777777| 亚洲精美色品网站| 亚洲欧美日韩精品久久奇米色影视| 51精品国产黑色丝袜高跟鞋| 国产在线观看精品| 国产精品69久久久久| 日韩黄色在线免费观看| 一区二区三区回区在观看免费视频| 九九热视频这里只有精品| 欧洲日韩成人av| 尤物九九久久国产精品的分类| 亚洲一区久久久| 亚洲性猛交xxxxwww| 国产成人精品最新| 国产精品日韩在线观看| 91精品视频在线| 国产成人在线亚洲欧美| 亚洲美女性视频| 色妞在线综合亚洲欧美| 8x海外华人永久免费日韩内陆视频| 亚洲深夜福利网站| 国产成人小视频在线观看| 亚洲男人天堂古典| 亚洲片国产一区一级在线观看| 美女视频久久黄| 日韩久久精品电影| 91久久久久久久久久| 成人国内精品久久久久一区| 国产在线视频91| 欧美日韩加勒比精品一区| 在线免费观看羞羞视频一区二区| 7777精品视频| 欧美xxxx综合视频| 亚洲视频欧美视频| 国产精品白嫩初高中害羞小美女| 欧美日韩人人澡狠狠躁视频| 欧美专区在线观看| 97视频在线观看免费| 国产精品视频免费观看www| 伊人伊成久久人综合网站| 国产精品久久网| 久久亚洲精品小早川怜子66| 91探花福利精品国产自产在线| 日韩视频在线免费观看| 欧美精品videos| 国产z一区二区三区| 亚洲欧美成人一区二区在线电影| 国产精品黄色影片导航在线观看| 日本乱人伦a精品| 亚洲精品电影久久久| 日韩一区二区三区国产| 久久中文字幕一区| 国产精品久久二区| 欧美成人午夜免费视在线看片| 亚洲精品一区二区在线| 久久69精品久久久久久国产越南| 欧美日韩国产一区中文午夜| 久久国产精品久久久| 亚洲欧美日韩中文在线| 国产日韩欧美在线| 97国产一区二区精品久久呦| 欧美wwwxxxx|