六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用VC訪問Sybase數據庫

[摘要]關鍵字 Sybase,數據庫訪問,ct-library接口 前段我在做一個項目時,要用到通過Sybase客戶端連接網絡Sybase數據庫的問題。在此之前,我做過好多access,...
關鍵字     Sybase,數據庫訪問,ct-library接口
  
    前段我在做一個項目時,要用到通過Sybase客戶端連接網絡Sybase數據庫的問題。

在此之前,我做過好多access,SQL server數據庫的項目,都是用ADO技術來實現的。但是這一次,領導要求用Sybase數據庫提供的ct-library接口,所以一下子以前所知道的數據庫訪問技術都沒有了用武之地,我當時在csdn上發過貼子,問過這個問題,但回應很少,現在這個問題已解決了,我想寫出來,和大家一塊探討,共同學習,也好給以后遇到這個問題的人一個入門指導。
    首先,必須安裝Sybase客戶端并配置Sybase客戶端。安裝完成后要從程序中運行

dsedit進行配置。server為要訪問的數據庫的名字,還有Sybase數據庫所在機子的IP和

Port及訪問的協議TCP;不會配置的,可以請教一下身邊的高手。
           當配置完畢后,可以用ping來檢查配置的正確性。
    下面就進入到編程了。
    在此,你還要讓你的工程包含Sybase的頭文件和動態鏈接庫。讓程序能認識Sybase

函數。打Tool--->Options后,選擇Directories標簽,Show directories for 中選擇

Include files后,你就可以增加Sybase的包含:例我這里Sybase是安裝在C:所以我指

定為:C:\sybase\include;同樣,再選擇Library files指定:C:\sybase\lib,就ok了。
    1.包含頭文件。在你要連接Sybase數據庫代碼的頭文件中添加#include

<ctpublic.h>,此時你就可以編譯一下,如果說找不到此頭文件,說明你上面包含指定的路徑不正確。
    2.聲明兩個連接 Sybase 數據庫必須的變量。
CS_CONTEXT         *context;  /* 內容結構 */
CS_CONNECTION      *ptrconnection; /* 連接結構 */
     我個人認為用ct-library接口訪問sybase數據庫與用ADO技術有很多相似之處,也

可以說訪問數據庫一般差不多,都是先創建空間,再創建連接。
       并初始化context:      context = (CS_CONTEXT *)NULL;
    3.我定義了下面幾個函數:
BOOL  ConnectSybaseDB(CString strDBName,CString strUser,CString

strPass); //連接數據庫:true成功,false失敗 其參數分別為:數據庫名,訪問數據庫

的用戶名,密碼。這個strDBName就是Sybase客啟端配置時的Server名字。
void    DisConnectSybaseDB();         //斷開數據庫
void    ShowDBError(int  nErrCode);   //顯示連接數據庫時的錯誤信息
   4.具體實現:
//////////////**********建立連接函數***********//////////////
       ConnectSybaseDB(CString strDBName,CString strUser,CString strPass)
{
CS_RETCODE     ret;
char username[32],password[32];
memset(username,0,sizeof(username));
memset(password,0,sizeof(password));
     strcpy(username,strUser);
strcpy(password,strPassword);
/*分配內容結構*/
if((ret=cs_ctx_alloc(CS_VERSION_100, &context)) != CS_SUCCEED)
{   //不成功則調用ShowDBError顯示錯誤代碼
  ShowDBError(ret);
  return FALSE;
}
/*初始化Client_Library*/
if((ret=ct_init(context,CS_VERSION_100)) != CS_SUCCEED)
{
  ShowDBError(ret);
  return FALSE;
}
/*分配連接結構*/
if((ret=ct_con_alloc(context,&ptrconnection))!=CS_SUCCEED)
{
  ShowDBError(ret);
  return FALSE;
}
/*設置用戶名和口令*/
if((ret=ct_con_props(ptrconnection,CS_SET,CS_USERNAME,username,CS_NULLTERM,NU

LL))!=CS_SUCCEED)
{
  ShowDBError(ret);
  return FALSE;
}


if((ret=ct_con_props(ptrconnection,CS_SET,CS_PASSWORD,password,CS_NULLTERM,NU

LL))!=CS_SUCCEED)
{
  ShowDBError(ret);
  return FALSE;
}
/*建立連接*/
char instance[20];
strcpy(instance,strDBName);
if((ret=ct_connect(ptrconnection, (CS_CHAR *)instance,

sizeof(instance))) != CS_SUCCEED)
{

  ShowDBError(ret);
  return FALSE;
}
else
  return TRUE;
}
//////////////**********斷開連接函數***********//////////////
        void    DisConnectSybaseDB()
{
CS_RETCODE ret;
  if ((ret = ct_close(ptrconnection, CS_UNUSED))!= CS_SUCCEED)
{
  ShowDBError(ret);
}
if ((ret = ct_con_drop(ptrconnection)) != CS_SUCCEED)/*釋放資源*/
{
  ShowDBError(ret);
}
if((ret=ct_exit(context,CS_UNUSED))!=CS_SUCCEED)/*關閉與服務器的所有

連接,退出CT-L*/
{
  ShowDBError(ret);
}
if((ret=cs_ctx_drop(context))!=CS_SUCCEED)/*釋放環境結構占用的資源*/
{
  ShowDBError(ret);
}
    context = (CS_CONTEXT *)NULL;
        return;
}
//////////////**********顯示錯誤代碼函數***********//////////////
   void    ShowDBError(int  nErrCode)
{
CString strDBErrorInfo;
switch(nErrCode)
{
case CS_MEM_ERROR:  
  strcpy(strDBErrorInfo, "內存不足或地址分配錯誤!");   
  break;
case CS_PENDING:
  strcpy(strDBErrorInfo, "異步網絡I/O正在進行!");   
  break;
case CS_BUSY:
  strcpy(strDBErrorInfo, "當前連接內有一異步操作正在進行!");
  break;
case CS_CANCELED:
  strcpy(strDBErrorInfo, "操作被取消!");
  break;
case CS_END_RESULTS:
  strcpy(strDBErrorInfo, "從服務器返回的結果處理結束!");
  break;
case CS_ROW_FAIL:
  strcpy(strDBErrorInfo, "提取當前行的數據失敗!");
  break;
case CS_END_DATA:
  strcpy(strDBErrorInfo, "數據提取結束!");
  break;
case CS_FAIL:
  strcpy(strDBErrorInfo, "函數執行失敗!");
  break;  
default:
  strcpy(strDBErrorInfo, "系統不識別的錯誤!");
  break;  
}
AfxMessageBox(strDBErrorInfo);

}

   以上是簡單的連接斷開與顯示錯誤信息的一些代碼,供大家參考。請大家多指導,和

大家共同進步。我的信箱:[email protected] 如轉載請標明作者:luckyegg


主站蜘蛛池模板: 午夜精品久久久久久久四虎 | 亚洲国产欧美在线 | 亚洲精品网站在线 | 色婷婷久久综合中文久久一本 | 欧美最猛性 | 日本免费在线观看视频 | 晚上正能量91香蕉 | 亚洲最大色网站 | 性感制服 | 午夜www在线观看完整版视频 | 色四月婷婷 | 五月天婷婷基地 | 中文有码中文字幕免费视频 | 婷婷四房综合激情五月性色 | 日本韩国在线视频 | 深爱激情小说网 | 新版天堂中文资源官网 | 亚洲 欧美 另类 综合 日韩 | 亚洲区在线播放 | 亚洲天堂免费观看 | 五月婷婷六月色 | 色天使久久综合网天天 | 亚洲综合三区 | 日本免费人成在线网站 | 色综合久久精品中文字幕 | 日韩欧美综合视频 | 污污视频在线播放 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片免费看 | 日本在线观看永久免费网站 | 天天射视频 | 午夜在线播放视频在线观看视频 | 婷婷丁香六月天 | 片免费观看网站视频 | 日韩三级毛片 | 亚洲人成网男女大片在线播放 | 天天色综合色 | 视频在线91| 色偷偷狠狠色综合网 | 欧美一级淫片免费播放口 | 日本a视频在线观看 | 五月开心综合 |