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

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  3 隨筆 :: 10 文章 :: 0 評論 :: 0 Trackbacks

代碼如下:

//所有的ODBC函數(shù)都以SQL開始

#include <conio.h>//getch()
#include <stdio.h>
#include <afxwin.h>//// MFC core and standard components
#include <sqlext.h> //包含有擴(kuò)展的ODBC的定義
#include <sql.h> //包含有基本的ODBC API的定義
#include <odbcinst.h>
#pragma comment(lib, "odbc32.lib")
#pragma comment(lib, "odbccp32.lib")//SQLConfigDataSource()函數(shù)

//#include "sqltypes.h"
//#include "sqlucode.h"
//#include "odbcss.h"


int main(int argc, char* argv[])
{
?
?SQLRETURN sr=SQL_SUCCESS;
?SQLHENV? hEnv=0; //分配odbc環(huán)境
?SQLHDBC? hDbc=0;//
?SQLHSTMT hStmt;//

?//
?SQLINTEGER iID;//第一列
?SQLCHAR tmJoin[20];//第二列
??? SQLCHAR szName[10];//第三列
?SQLREAL fTall;//第四列
?SQLINTEGER cbID,cbJoin,cbName,cbTall;//保存得到的數(shù)據(jù)的長度
?//
?int i=0;
?SQLCHAR?? SqlState[6];
?SQLINTEGER NativeError;
?SQLCHAR ErrMsg[SQL_MAX_MESSAGE_LENGTH];
?//
?char szDSN[] = "TestDB";//ODBC數(shù)據(jù)源
?char szUID[] = "sa"; //SQL用戶
?char szPWD[] = ""; //口令
??? LPCSTR svSQL="select * from [ApiOdbc]";

?//創(chuàng)建ODBC句柄,分配odbc環(huán)境
?/*對于任何ODBC應(yīng)用程序來說,第一步的工作是裝載驅(qū)動(dòng)程序管理器,然后初始化ODBC環(huán)境,分配環(huán)境句柄。
??? 首先,程序中聲明一個(gè)SQLHENV類型的變量,然后調(diào)用函數(shù)SQLAllocHandle,向其中傳遞分配的上述SQLHENV類型
?的變量地址和SQL_HANDLE_ENV選項(xiàng)。如下代碼所示:SQLHENV henv;SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
??? 執(zhí)行該調(diào)用語句后,驅(qū)動(dòng)程序分配一個(gè)結(jié)構(gòu),該結(jié)構(gòu)中存放環(huán)境信息,然后返回對應(yīng)于該環(huán)境的環(huán)境句柄。
?SQLRETURN SQLAllocHandle(
??????SQLSMALLINT?? HandleType,
??????SQLHANDLE???? InputHandle,第二個(gè)參數(shù)為輸入句柄
??????SQLHANDLE *?? OutputHandlePtr 第三個(gè)參數(shù)為輸出句柄
???????);??
?SQL_HANDLE_ENV:申請環(huán)境句柄。
??? SQL_HANDLE_DBC:申請數(shù)據(jù)庫連接句柄
?SQL_HANDLE_STMT:申請SQL語句句柄,每次執(zhí)行SQL語句都申請語句句柄,并且在執(zhí)行完成后釋放*/
???
?//利用動(dòng)態(tài)鏈接庫Odbcinst.dll動(dòng)態(tài)創(chuàng)建DSN
?if(SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"SQL Server","DSN=TestDB\0Description=TestAPIODBC\0SERVER=(local)\0DATABASE=TestDB"))
?{
??printf("32位ODBC數(shù)據(jù)源配置 Success!\n\n");
?}
???
?sr = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&hEnv);
?if(sr==SQL_SUCCESS||sr==SQL_SUCCESS_WITH_INFO)
?{
??printf("1~~創(chuàng)建環(huán)境句柄SQLAllocHandle Success!\n");
?}
??? //設(shè)定odbc版本,將ODBC設(shè)置成為版本3,否則某些ODBC API 函數(shù)不能被支持
?sr = SQLSetEnvAttr(hEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3,SQL_IS_INTEGER);
?if(sr==SQL_SUCCESS||sr==SQL_SUCCESS_WITH_INFO)
?{
??printf("2~~SQLSetEnvAttr Success!\n");
?}
?//分配odbc連接句柄
?/*分配環(huán)境句柄后,在建立至數(shù)據(jù)源的連接之前,我們必須分配一個(gè)連接句柄,每一個(gè)到數(shù)據(jù)源的連接對應(yīng)于一個(gè)連接句柄。
??? 首先,程序定義了一個(gè)SQLHDBC類型的變量,用于存放連接句柄,然后調(diào)用SQLAllocHandle函數(shù)分配句柄。如下代碼所示:
??? SQLHDBC hdbc;SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);henv為環(huán)境句柄。*/
??? sr = SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDbc);
??? if(sr==SQL_SUCCESS||sr==SQL_SUCCESS_WITH_INFO)
?{
??printf("3~~創(chuàng)建連接句柄SQL_HANDLE_DBC Success!\n");
?}
??? //連接連接屬性
?/*當(dāng)連接句柄分配完成后,我們可以設(shè)置連接屬性,所有的連接屬性都有缺省值,但是我們可以通過調(diào)用函數(shù)SQLSetConnectAttr()
?來設(shè)置連接屬性。用函數(shù)SQLGetConnectAttr()獲取這些連接屬性。函數(shù)格式如下:
?SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle,SQLINTEGER Attribute,SQLPOINTER ValuePtr,SQLINTEGER StringLength);
?SQLRETURN SQLGetConnectAttr(SQLHDBC ConnectionHandle,SQLINTEGER Attribute,SQLPOINTER ValuePtr,SQLINTEGER StringLength);
??? 應(yīng)用程序可以根據(jù)自己的需要設(shè)置不同的連接屬性。*/
?sr = SQLSetConnectAttr(hDbc,SQL_ATTR_LOGIN_TIMEOUT,(void*)7,0);
??? if(sr==SQL_SUCCESS||sr==SQL_SUCCESS_WITH_INFO)
?{
??printf("4~~設(shè)置連接屬性SQLSetConnectAttr Success!\n");
?}
?
?//連接
?/*完成對連接屬性的設(shè)置之后,就可以建立到數(shù)據(jù)源的連接了。對于不同的程序和用戶接口,可以用不同的函數(shù)建立連接:
?SQLConnect、SQLDriverConnect、SQLBrowseConnect。
??? SQLConnect該函數(shù)提供了最為直接的程序控制方式,我們只要提供數(shù)據(jù)源名稱、用戶ID和口令,就可以進(jìn)行連接了。
??? 函數(shù)格式:SQLRETURN SQLConnect(SQLHDBC ConnectionHandle,SQLCHAR ServerName,SQLSMALLINT NameLength1,SQLCHAR UserName,SQLSMALLINT NameLength2,SQLCHAR *Authentication,SQLSMALLINT NameLength3);
??? 參數(shù):ConnectionHandle 連接句柄,ServerName 數(shù)據(jù)源名稱,NameLength1 數(shù)據(jù)源名稱長度,UserName 用戶ID
?NameLength2 用戶ID長度,Authentication 用戶口令,NameLength3 用戶口令長度
?返回值:SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, or SQL_INVALID_HANDLE.
?成功返回SQL_SUCCESS*/
?sr = SQLConnect(hDbc,(SQLCHAR *)szDSN, SQL_NTS,(SQLCHAR *)szUID,SQL_NTS,(SQLCHAR *)NULL,SQL_NTS);
??? /*如果返回值為SQL_ERROR或SQL_SUCCESS_WITH_INFO,可以用函數(shù)SQLGetDiagRec獲取相應(yīng)SQLSTATE的值*/
?if(sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO)
?{
??TRACE("ERROR");
??while(SQLGetDiagRec(SQL_HANDLE_DBC,hDbc,i,SqlState, &NativeError,ErrMsg,sizeof(ErrMsg),NULL)!= SQL_NO_DATA)
???TRACE("Diag : %d SQLSTATE :%s NativeError : %d ,ErrMsg : %s\n",i ++,SqlState,NativeError,ErrMsg);
?}
?else
?{
??printf("5~~連接Connect Success!\n");
??? }
?//分配語句句柄sr = SQLAllocStmt(hDbc,&hStmt);SQLAllocStmt() 已被廢棄,且替換為 SQLAllocHandle();
?sr=SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
??? if(sr == SQL_SUCCESS||sr == SQL_SUCCESS_WITH_INFO)
?{
??printf("6~~分配語句句柄SQL_HANDLE_STMT Success!\n");
?}

??? //執(zhí)行SQL查詢語句
?sr=SQLExecDirect(hStmt,(UCHAR *)svSQL,SQL_NTS);
??? if (sr == SQL_SUCCESS||sr == SQL_SUCCESS_WITH_INFO)
??? {
??????? printf("7~~執(zhí)行SQL查詢語句SQLExecDirect Success!\n");
??printf("\n-------------get date from db-------------\n");
??while ((sr=SQLFetch(hStmt))!=SQL_NO_DATA)
??{
???//執(zhí)行SQL語句后遍歷結(jié)果集來得到數(shù)據(jù)
???SQLGetData(hStmt, 1, SQL_C_ULONG, &iID, 0, &cbID);
???SQLGetData(hStmt, 2, SQL_C_CHAR,? tmJoin, 20, &cbJoin);//datatime類型放在SQLCHAR數(shù)組中,數(shù)組length要足夠
???SQLGetData(hStmt, 3, SQL_C_CHAR,? szName, 10, &cbName);
???SQLGetData(hStmt, 4, SQL_C_FLOAT, &fTall, 0, &cbTall);
???printf("%d~~~%s~~~%s~~~%f\n",iID,tmJoin,szName,fTall);
??}
?}

??? //釋放句柄
?if(hStmt!=SQL_NULL_HANDLE)
?{
??SQLFreeHandle( SQL_HANDLE_STMT, hStmt );
???? hStmt=NULL;
?}
?if(hDbc != SQL_NULL_HANDLE)
?{
??sr = SQLDisconnect(hDbc);
??SQLFreeHandle(SQL_HANDLE_DBC,hDbc);
??hDbc=NULL;
?}
?if(hEnv != SQL_NULL_HANDLE)
?{
??SQLFreeHandle(SQL_HANDLE_ENV,hEnv);
??hEnv=NULL;
?}
?//
?printf("API ODBC Success!\n");
?system("PAUSE");
?return 0;
}

?

?

?

?

posted on 2006-07-03 20:18 dbsky 閱讀(703) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)庫編程
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美视频在线观看 亚洲欧| 中国女人久久久| 久久免费视频在线观看| 欧美伊人久久久久久久久影院| 夜夜嗨一区二区| 99精品欧美一区| 艳妇臀荡乳欲伦亚洲一区| 亚洲调教视频在线观看| 亚洲欧美影院| 久久久久一区二区| 欧美高清日韩| 国产精品观看| 国产农村妇女精品一二区| 国产毛片精品视频| 亚洲国产精品一区二区尤物区| 黄色在线一区| 日韩网站在线| 欧美亚洲一区三区| 欧美va亚洲va国产综合| 日韩午夜在线电影| 欧美一区二区三区免费看| 亚洲一区二区高清视频| 国产精品劲爆视频| 国产精品久久久久免费a∨| 国产欧美精品日韩区二区麻豆天美| 国内成人精品2018免费看| 亚洲黄色高清| 欧美影院在线| 亚洲黑丝一区二区| 日韩视频在线一区二区| 久久精品国产清自在天天线| 欧美日韩免费观看一区| 在线免费精品视频| 欧美在线啊v| 国产精品成人一区二区艾草| 红桃视频欧美| 亚洲在线观看免费视频| 美女脱光内衣内裤视频久久网站| 在线亚洲一区二区| 欧美~级网站不卡| 国产亚洲精品资源在线26u| 亚洲人永久免费| 久久综合综合久久综合| 亚洲欧美日韩天堂一区二区| 欧美日韩激情小视频| 91久久精品日日躁夜夜躁国产| 欧美伊人久久| 亚洲欧美一级二级三级| 国产精品高潮粉嫩av| 亚洲美女精品一区| 亚洲电影免费| 老司机67194精品线观看| 国产自产高清不卡| 久久精品成人| 性做久久久久久久免费看| 欧美日韩一区精品| 亚洲天堂视频在线观看| 99国产精品久久久久老师| 欧美精品久久99| 亚洲精品美女免费| 最新日韩av| 欧美性久久久| 午夜精品福利一区二区蜜股av| 日韩天堂在线观看| 国产精品久久久久久超碰| 一区二区欧美激情| 一区二区不卡在线视频 午夜欧美不卡在| 欧美高清视频一区| 在线视频日本亚洲性| 久久天天躁狠狠躁夜夜av| 国产精品va在线播放| 亚洲视频综合在线| 亚洲视频在线视频| 国产欧美日韩三区| 久久综合网络一区二区| 免费一级欧美在线大片| 夜夜精品视频一区二区| 亚洲日本久久| 欧美午夜电影在线观看| 性久久久久久久久久久久| 亚洲国产专区校园欧美| 欧美乱人伦中文字幕在线| 亚洲精品国产精品国产自| 亚洲激情另类| 国产精品久久久久久久久| 欧美在线看片a免费观看| 久久精品国产亚洲一区二区三区| 久久久91精品国产| 国产一区二区三区最好精华液| 久久久久久久高潮| 欧美大秀在线观看| 欧美亚洲一区二区在线| 久久久久久久欧美精品| 亚洲精品一品区二品区三品区| 一本高清dvd不卡在线观看| 国产一区二区精品在线观看| 亚洲国产精品va在线观看黑人| 欧美日韩亚洲国产一区| 久久天天躁狠狠躁夜夜爽蜜月| 欧美国产视频日韩| 欧美一区国产二区| 欧美电影在线免费观看网站 | 国产欧美日韩综合一区在线播放| 久久久亚洲精品一区二区三区 | 国产在线视频欧美| 亚洲国产清纯| 国产一区二区0| 日韩写真在线| 亚洲激情网站免费观看| 亚洲综合999| 一本色道**综合亚洲精品蜜桃冫| 久久www成人_看片免费不卡| 中文一区二区在线观看| 久久人人精品| 久久精品视频在线免费观看| 欧美日韩视频第一区| 欧美18av| 国内成人在线| 亚洲欧美视频在线| 亚洲午夜激情| 欧美精品少妇一区二区三区| 久久野战av| 国产九九精品视频| 9色porny自拍视频一区二区| 亚洲精品欧美在线| 另类专区欧美制服同性| 久久综合中文字幕| 国产亚洲精品久久久久动| 一本久久a久久免费精品不卡| 亚洲国产精品日韩| 久久在线视频在线| 久久综合色播五月| 国内在线观看一区二区三区| 香蕉久久a毛片| 久久不射网站| 国产亚洲成精品久久| 亚洲欧美日韩国产一区| 亚洲综合另类| 欧美日韩精品伦理作品在线免费观看| 欧美激情亚洲国产| 国模精品一区二区三区| 国产人成精品一区二区三| 一区二区冒白浆视频| 99香蕉国产精品偷在线观看| 欧美理论电影在线观看| 欧美国产日韩一区二区在线观看 | 久久aⅴ乱码一区二区三区| 欧美午夜电影完整版| 亚洲网在线观看| 欧美一区二区三区另类| 国产午夜精品久久久| 欧美专区一区二区三区| 暖暖成人免费视频| 亚洲精品少妇30p| 欧美日韩蜜桃| 午夜精品久久久久久久久久久久久| 亚洲精品一区二区三区婷婷月 | 一本久久综合亚洲鲁鲁| 欧美日韩午夜剧场| 亚洲欧美综合精品久久成人| 久久综合久色欧美综合狠狠| 亚洲国内精品在线| 欧美精品一区二区三区蜜臀| 日韩视频免费观看高清在线视频 | 久久在线免费观看视频| 亚洲国产精品小视频| 在线亚洲一区二区| 国产日韩欧美在线一区| 快射av在线播放一区| 日韩午夜av在线| 久久久久亚洲综合| 亚洲理论在线观看| 国产精品素人视频| 麻豆精品网站| 亚洲视频专区在线| 欧美成人综合网站| 亚洲欧美日韩天堂一区二区| 精品电影在线观看| 欧美视频一区二区三区…| 久久激情久久| 国产精品99久久久久久宅男| 欧美1区视频| 午夜一区二区三视频在线观看| 亚洲国产精品免费| 国产亚洲欧美一区二区| 欧美日韩国产经典色站一区二区三区| 午夜亚洲激情| 一区二区三区四区五区精品视频 | 亚洲一区精品电影| 亚洲电影下载| 久久久久网站| 亚洲一区二区三区四区在线观看| 黄色成人av在线| 国产精品一区二区你懂得 | 亚洲精品社区| 欧美理论在线播放| 日韩午夜激情电影| 欧美搞黄网站| 久久这里有精品视频| 性xx色xx综合久久久xx|