青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

在C中嵌入SQL語句訪問DB2數據庫

Posted on 2008-09-03 10:43 Prayer 閱讀(2350) 評論(0)  編輯 收藏 引用 所屬分類: C/C++DB2

SQL/C學習筆記 在C中嵌入SQL

公司最近有個項目,需要在Linux下訪問DB2數據庫,Linux在我機器上裝了好幾年了也沒碰過,郁悶。DB2

就只是聽說過,沒有見過。C倒是用過一段時間。于是打開百度,狗狗開搜。
于是找到一部分文章,從中找了一些代碼:短小,感覺適合入門。被我改了改,程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "util.h"
#include <sqlca.h>
EXEC SQL INCLUDE SQLCA;
main()
{
 EXEC SQL BEGIN DECLARE SECTION;
 char firstname[130];
 char userid[9];
 char passwd[19];
 EXEC SQL END DECLARE SECTION;

 EXEC SQL CONNECT TO Test;
 EXEC SQL SELECT SEALNAME INTO :firstname
 FROM SEAL fetch first 1 row only;

 printf( "First name = %s\n", firstname );
 EXEC SQL CONNECT RESET;
 return 0;
}
我就不解釋這段程序了,網上一搜解釋的都比我好。一會最后貼出原貼方便以后使用。
打開VC編輯環境,將代碼貼了進去。編譯。我考,一堆錯誤,說什么不認識EXEC ....,這是怎么回事啊

,難道是少包含了頭文件,趕快找啊。找了一堆,加上,外甥打燈籠-照舊(招舅)。TNND,再查。

好長時間過去了,怎么得有幾個小時吧,狗狗都累了。最后才明白,VC編譯器不能直接編譯這種代碼,(

我突然覺得怎么有點像ASP呢,混在一起)必須先使用預處理器將這些代碼轉換成c代碼,VC編譯環境才能

認。那怎么轉換呢?使用什么樣的預處理器呢?再查,忘了是從哪查到一個 DB2 prep *.sqc bindfile命

令,感覺上這個可以了,馬上運行cmd打開控制臺,輸入試,N次后我差點一屁股就坐地上了,前面帶了個

DB2,應該是在DB2的命令行下運行吧,于是在bin下找到了什么exe來著,就是命令行工具中的全集窗口。

打開,輸入,興奮啊。在我可愛的sqc文件旁邊出了個.c的文件,哈哈,就是他了。

或許是我高興的太早,或許是我運氣不好,該例子始終過不去,沒報什么錯
,NND。這是為啥?!難道我的SQL語句錯了?!在DB2的控制臺下再試,考,成功。再運行我的程序,還

是報這個錯。改程序,或許是我的Select 語句不行,我建個表試試不取數據總行吧。于是有了如下的代

碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "util.h"
#include <sqlca.h>

EXEC SQL INCLUDE SQLCA;
#define CHECKERR(CE_STR) if (check_error (CE_STR, &sqlca) != 0) return 1;

int check_error (char eString[], struct sqlca *caPointer)
{
 char eBuffer[1024];
 char sBuffer[1024];
 short rc, Erc;
 if (caPointer->sqlcode != 0)
  {
  printf ("--- error report ---\n");
  printf ("ERROR occured : %s.\nSQLCODE : %ld\n", eString,
  caPointer->sqlcode);
 }
 return 0;
}

int main(int argc, char *argv[])
{
 EXEC SQL BEGIN DECLARE SECTION;
 char firstname[13];
 char userid[9];
 char passwd[19];
 EXEC SQL END DECLARE SECTION;
 printf( "Sample C program: STATIC\n" );
 if (argc == 1)
 {
  EXEC SQL CONNECT TO test user test using hdshtest;
  CHECKERR ("CONNECT TO SAMPLE");
 }
 else if (argc == 3)
 {
  strcpy (userid, argv[1]);
  strcpy (passwd, argv[2]);
  EXEC SQL CONNECT TO test USER :userid USING :passwd;
  CHECKERR ("CONNECT TO SAMPLE");
 }
 else
 {
  printf ("\nUSAGE: static [userid passwd]\n\n");
  return 1;
 } /* endif */

    // create table
  EXEC SQL CREATE TABLE tbname(col1 SMALLINT,
                                       col2 CHAR(7),
                                       col3 VARCHAR(7),
                                       col4 DEC(9, 2),
                                       col5 DATE,
                                       col6 BLOB(5000),
                                       col7 CLOB(5000));

 CHECKERR("Table -- Create");

    EXEC SQL COMMIT;
    CHECKERR("Transaction -- Commit");
 
 /*
    
     EXEC SQL SELECT account.moneytype INTO :firstname FROM test.account fetch first

1 row only;
 */
 EXEC SQL SELECT name INTO :firstname FROM accounttype where id = '1';
 CHECKERR ("SELECT statement");
 printf( "First name = %s\n", firstname );
 EXEC SQL CONNECT RESET;
 CHECKERR ("CONNECT RESET");
 return 0;
}
/* end of program : STATIC.SQC */

重復上述步驟,重新生成了.C的文件,還是出不了我要的結果,但是我加上出錯處理了, 先看看出錯信

息,出錯信息如下:
sqlcode:  -805
sqlstate:  51002
這是什么東西?再搜。我可是在百度上搜了N分鐘啊。大多是java的,看不懂。老天不負我有心人吶,最

終找到了解釋:

請問db2的這個錯誤是什么意思?

DB2 SQL error: SQLCODE: -805, SQLSTATE: , SQLERRMC: NULLID.SYSSH200

回答:
解釋:  此信息 (SQLCODE) 的可能原因是:

o   未在數據庫中定義指定的程序包或程序。

o   未聯編該程序或它已被卸下。

o   正在運行的應用程序未與數據庫聯編。

o   若試圖運行 DB2 實用程序或 CLI 應用程序, 則 DB2
    實用程序可能需要重新聯編至數據庫。

不能處理該語句。

用戶響應:
指定正確的程序包名或聯編該程序。若正在運行的應用程序未與數據庫聯編
,則與數據庫管理員聯系以執行必需的聯編。

若 DB2
實用程序需要重新聯編至數據庫,則當連接至數據庫時,數據庫管理員可以
通過從實例的 bnd 子目錄發出下列 CLP 命令之一來完成此操作: 

o   對于 DB2 實用程序,發出 "DB2 bind @db2ubind.lst blocking all
    grant public"。

o   對于 CLI,發出 "DB2 bind @db2cli.lst blocking all grant
    public"。

聯合體系統用戶:確保在適用的數據源上聯編 聯合體服務器
所必需的程序包。參考“安裝和配置補遺”指南以獲取有關將程序包與數據
源聯編的詳情。

sqlcode:  -805

sqlstate:  51002
當真是遇上救星了?于是乎,我將剛才搜到的信息總結了一下,三句話:

如果您打完補丁10后,您需要對每一個數據庫執行
db2 terminate
db2 CONNECT TO <dbname>
db2 BIND <path>/db2schema.bnd BLOCKING ALL GRANT PUBLIC sqlerror continue
db2 terminate

DB2 bind @db2ubind.lst blocking all grant public
DB2 bind @db2cli.lst blocking all grant public

bind "C:\Program Files\IBM\SQLLIB\BINtestmain.bnd" BLOCKING ALL GRANT PUBLIC sqlerror

continue

如上在DB2后輸入的上述命令,我暈,程序還是不對。不能出來正確結果。今天注定我一晚上睡不好嗎?
就是我要失去信心的時候,發現了在我的.c的旁邊一直躲著個.bnd的文件。考,再bind一次這個家伙。哈哈哈,我要的結果出來了!爽,痛快,寫下來,省得過幾天忘了,有做這方面的朋友也可以少走些彎路,呵呵。
 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产麻豆午夜三级精品| 久久九九久久九九| 欧美日韩国产精品一卡| 久久久久9999亚洲精品| 亚洲欧美日韩天堂| 日韩一级精品视频在线观看| 亚洲经典一区| 国产乱肥老妇国产一区二| 91久久久久久国产精品| 一区二区免费在线视频| 亚洲理论在线| 一区二区高清视频| 亚洲视频一二三| 99精品热视频只有精品10| 亚洲国产精品久久久| 在线高清一区| 亚洲欧洲日本mm| 日韩视频中文| 在线亚洲精品| 亚洲欧美在线免费| 欧美一级淫片aaaaaaa视频| 性高湖久久久久久久久| 久久久一区二区| 免播放器亚洲一区| 欧美成人免费全部| 日韩午夜电影在线观看| 亚洲手机成人高清视频| 日韩一级不卡| 性欧美8khd高清极品| 一本在线高清不卡dvd | 欧美金8天国| 欧美日韩精品欧美日韩精品| 国产精品欧美一区二区三区奶水| 国产精品裸体一区二区三区| 国产欧美在线观看| 亚洲黑丝一区二区| 亚洲系列中文字幕| 久久精品国产99国产精品澳门| 久久伊人精品天天| 亚洲精品国产精品国产自| 一区二区三区久久久| 欧美在线不卡| 欧美日韩国产精品专区| 国模吧视频一区| 一本大道久久精品懂色aⅴ| 午夜一区不卡| 欧美国产大片| 99精品99久久久久久宅男| 亚洲午夜电影| 欧美成人乱码一区二区三区| 一区二区三区国产精华| 久久女同互慰一区二区三区| 欧美日韩精品免费| 国产综合av| 午夜精品成人在线| 亚洲激情在线视频| 亚洲欧美一区二区在线观看| 欧美国产亚洲视频| 伊伊综合在线| 欧美在线你懂的| 99精品视频免费观看| 快she精品国产999| 国产综合久久久久影院| 午夜精品久久久久久久白皮肤 | 欧美国产亚洲精品久久久8v| 亚洲欧美另类中文字幕| 欧美日韩国产一级片| 在线看日韩欧美| 欧美一区二区视频免费观看| 亚洲精品视频中文字幕| 男同欧美伦乱| 在线日韩av永久免费观看| 久久精品网址| 亚洲综合国产| 国产精品美女久久久| 一本一本大道香蕉久在线精品| 久热精品视频在线免费观看| 午夜精品久久久久久久久久久| 欧美色综合网| 亚洲一区一卡| 亚洲视频一二区| 欧美日韩在线三区| 宅男噜噜噜66一区二区| 亚洲精品一区二区三区不| 欧美大片免费观看| 亚洲卡通欧美制服中文| 亚洲国产精品精华液网站| 亚洲小说春色综合另类电影| 欧美日韩精品在线| 中文精品一区二区三区| 一本色道久久综合一区 | 亚洲成人中文| 欧美精品色网| aa国产精品| 9色porny自拍视频一区二区| 欧美午夜精品久久久久久久 | 欧美日韩中国免费专区在线看| 日韩一区二区久久| 在线视频精品| 国产一区二区三区四区hd| 久久久人成影片一区二区三区| 先锋a资源在线看亚洲| 欧美一区二区在线免费观看| 国产在线观看一区| 久久人人爽人人爽| 欧美成人精品高清在线播放| 在线视频你懂得一区| 亚洲七七久久综合桃花剧情介绍| 久久精品视频在线观看| 正在播放亚洲一区| 亚洲欧美成人精品| 亚洲精品综合精品自拍| 99视频一区二区| 亚洲国产天堂久久综合网| 亚洲精品一区二区三区樱花| 在线欧美电影| 亚洲免费伊人电影在线观看av| 欧美三级乱码| 亚洲区欧美区| 国产午夜精品一区二区三区欧美| 亚洲乱码国产乱码精品精可以看| 国产精品一页| 亚洲一区二区网站| 亚洲激情婷婷| 亚洲精品一二三区| 在线观看福利一区| 亚洲最新在线| 在线日韩欧美| 亚洲影视九九影院在线观看| 亚洲国内精品| 欧美在线三级| 亚洲欧美日韩国产另类专区| 久久久高清一区二区三区| 亚洲视频网在线直播| 久久久蜜桃精品| 亚洲欧美一区二区三区极速播放 | 国产午夜精品全部视频在线播放| 欧美国产日本高清在线| 国产精品美腿一区在线看| 亚洲承认在线| 亚洲欧美经典视频| 亚洲亚洲精品在线观看 | 欧美国产日韩在线| 国内免费精品永久在线视频| 亚洲午夜精品久久久久久app| 亚洲精品1区| 久久琪琪电影院| 久久久99免费视频| 国产精品人人爽人人做我的可爱| 最新精品在线| 亚洲三级观看| 久色婷婷小香蕉久久| 伊人一区二区三区久久精品| 欧美一区二区三区免费在线看| 亚洲一区二区欧美| 欧美日韩精品综合| 亚洲人成啪啪网站| 99精品久久免费看蜜臀剧情介绍| 裸体一区二区三区| 欧美国产日韩一区二区在线观看| 国产综合色产在线精品| 性刺激综合网| 国产日韩欧美视频| 久久精品一区四区| 亚洲一区精品电影| 午夜精品偷拍| 欧美激情在线播放| 亚洲精品日产精品乱码不卡| 一本一道久久综合狠狠老精东影业| 久久国内精品视频| 麻豆freexxxx性91精品| 亚洲精品社区| 欧美日韩精品一区二区| 亚洲摸下面视频| 美女国产精品| 亚洲美女在线国产| 欧美日韩在线不卡一区| 亚洲午夜精品网| 久久全球大尺度高清视频| 亚洲国产精品一区二区久| 欧美日韩亚洲一区二区| 亚洲欧美亚洲| 欧美高清不卡| 99精品国产一区二区青青牛奶| 国产精品久久久久影院色老大| 亚洲国产日韩欧美综合久久| 欧美中文字幕久久| 亚洲国产成人精品久久| 欧美日韩你懂的| 欧美一区午夜精品| 亚洲激情图片小说视频| 香蕉久久夜色精品| 亚洲国产精品美女| 国产精品任我爽爆在线播放| 久久riav二区三区| 亚洲九九精品| 午夜在线精品偷拍| 亚洲高清资源综合久久精品| 欧美日韩一区二区三区四区在线观看 | 久久国产精品99国产精|