大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 用VC访问Sybase数据库

用VC访问Sybase数据库

时间: 2021-07-31 作者:daque

要害字     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,null))!=cs_succeed) {  showdberror(ret);  return false; } if((ret=ct_con_props(ptrconnection,cs_set,cs_password,password,cs_nullterm,null))!=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);}   之上是大略的贯穿割断与表露缺点消息的少许代码,供大师参考。请大师多引导,和大师共通超过。我的邮箱:moorhen@263.net 如连载请表明作家:luckyegg

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.