实在是没办法了(如果通过ado连接sybase)

hbboy 2004-08-19 09:51:35
在服务里面不能通过odbc连接数据库(我没有成功),通过ado连接又没有成功,请求帮助!


下面是连接sql serve的,争取,怎么连接sybase呢?希望各位高手帮我诊断一下,不胜感谢!!!!
bt=(_bstr_t)" Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=sql;Initial Catalog=tempx;Data Source=134.34.7.136";
CoInitialize(NULL); //Initialize COM
try{
hr=cn.CreateInstance(__uuidof(Connection));
ASSERT(SUCCEEDED(hr));
hr=cn->Open (bt,_bstr_t(""),_bstr_t(""),adModeUnknown);
ASSERT(SUCCEEDED(hr));
m_bConnected=TRUE;
}
catch ( _com_error e )
{
CString strErrMsg;
strErrMsg.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(strErrMsg);
}
...全文
392 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhenry 2004-08-27
  • 打赏
  • 举报
回复
windows服务程序只能访问系统DSN.
glaanna 2004-08-26
  • 打赏
  • 举报
回复
我给你写出来的连接串可能不对,我凭记忆写的,我下去帮你查查,但我觉得是你连接串的问题,往往错误就发生在最基本的东西上边,你的数据库的sa用户你人为指定了密码吗,sql这个密码是不是你后来加上去的,如果sa用户没有密码,你加了密码肯定是不对的,连接串不一定要照搬别人的做法,但关键是信息要全,你多试试如果行不通,再从别的问题着手!
glaanna 2004-08-26
  • 打赏
  • 举报
回复
楼主,在服务器中可以通过odbc连接sybase,能连接成功,先建立odbc,然后通过ado 连接,我看你的连接串了,你好好检查你的连接串,既然是服务器,你为什么要在连接串中的data sourse中写入服务器的地址呢,连接你要连接的数据库的名称,然后指定连接哪个数据库应该可以成功,服务器端你有没有安装sybase的客户端,因为安装客户端后才有驱动,我用的库是sybase system 11!我觉得连接串很重要,你用你以前的连接串连接的时候跟踪诊断一下是提示什么错误,如果是提示驱动找不到的话,是你没有装sybase驱动,如果是你连接串的信息不够的话,你把连接串的信息写全!
........;
m_Connection->Open(_bstr_t(L"Driver={Sybase System 11};Persist Security Info=False;User ID=sa;Data Source=XXX;DataBase=XXXX"),_bstr_t(L""),_bstr_t(L""),adModeUnknown);
或者m_Connection->Open(_bstr_t("Provider=MSDASQL.1;DSN=XX;UID=sa;PWD="),"","",adModeUnknown);也能连接成功,不过成功后可能以后会有错误发生!
我凭记忆写的,好象是这样!你先试试!
hbboy 2004-08-25
  • 打赏
  • 举报
回复
delphi很早以前用过,现在都忘了!
楼上的说:
//先建立一个ODBC的数据源SN
#import "c:\program files\common files\system\ado\msado15.dll"
#include "ICRSINT.H"
AfxOleInit();
_ConnectionPtr m_Connection;
m_Connection.CreateInstance(__uuidof(Connection));
m_Connection->Open(_bstr_t("Provider=MSDASQL;DSN=SN;UID=sa;PWD="),"","",-1);
//我想这样会好用吧
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
能否写详细点啊?最好给个例子我,谢谢!
sunrising@cnc-qd.com
lq100 2004-08-25
  • 打赏
  • 举报
回复
//先建立一个ODBC的数据源SN
#import "c:\program files\common files\system\ado\msado15.dll"
#include "ICRSINT.H"
AfxOleInit();
_ConnectionPtr m_Connection;
m_Connection.CreateInstance(__uuidof(Connection));
m_Connection->Open(_bstr_t("Provider=MSDASQL;DSN=SN;UID=sa;PWD="),"","",-1);
//我想这样会好用吧
醉马不肖 2004-08-25
  • 打赏
  • 举报
回复
看看delphi连接的串不就ok马?
hbboy 2004-08-25
  • 打赏
  • 举报
回复
也试过!
我是首先通过odbc连接的啊!
Kudeet 2004-08-24
  • 打赏
  • 举报
回复
http://search.csdn.net/search.asp

看看以前的帖子,SORRY 了
hbboy 2004-08-24
  • 打赏
  • 举报
回复
我的本机上已经装了sybase客户端和服务端!
驱动应该都有的!
Kudeet 2004-08-24
  • 打赏
  • 举报
回复
可能要sybase客户端的ole db驱动程序,可以下载吧!

没具体试过
Kudeet 2004-08-24
  • 打赏
  • 举报
回复
装 PB7 带 PB Sybase OLE DB Provider 试试!
hbboy 2004-08-24
  • 打赏
  • 举报
回复
进一步发现可以调用基于MFC的exe文件,关键是这个exe文件里面不能通过ole连接数据库!
hbboy 2004-08-24
  • 打赏
  • 举报
回复
对了,服务里面可以调用exe文件,比如C:\\Sybase\\bin\\bcp.exe就可以调用,但是如果我用vc写的一个基于对话框的文件,在这个对话框的初始化事件里面写一些连接sybae的操作的话,就会调用不成功,那各位高手说说,是不是服务里面不能调用基于MFC的exe文件了?
ShellExecute(NULL,"open","J:\\vc_new\\jfzx_sybase\\Debug\\jfzx_sybase.exe"," ","H:\\",SW_SHOW);
这样调用的话,我认为相当于把这个exe文件扔出去了,我得这个服务进程扔了之后与这个exe文件没有关系了啊!怎么会调用不起来呢?
奇怪!
hbboy 2004-08-24
  • 打赏
  • 举报
回复
好像是sybae 11.9.2一下的版本都不能通过ole连接数据库,只能通过odbc连接!
其实,通过odbc连接是可以的,关键是我想做成服务的话,服务里面不能通过odbc连接,所以只能通过ado连接(连接sql server是成功的),这时候我想了一个办法,把需要在sybase中处理的问题写在一个exe文件里面,然后在服务里面调用,问题又出来了,
我在服务里面调用这个exe文件的时候这个exe根本就不执行,并且这个进程又调用起来了,句柄丢失,除非重新启动机器才可以使得这个进程消失!
请问各位大侠,在服务里面可以调用其他的exe文件吗?
Kudeet 2004-08-24
  • 打赏
  • 举报
回复
你先建立一个ODBC,然后再用ADO,怎么样?
hbboy 2004-08-24
  • 打赏
  • 举报
回复
等等,明天结帐!
hbboy 2004-08-24
  • 打赏
  • 举报
回复
真的没有人能够解决啊?
sddlfz 2004-08-24
  • 打赏
  • 举报
回复
还请知道的朋友帮帮楼猪.
hbboy 2004-08-24
  • 打赏
  • 举报
回复
谢谢楼上的好心!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我得问题该怎么解决了?
迷茫!!!!!!!!!!!!1
ivandova 2004-08-19
  • 打赏
  • 举报
回复
你的连接字符串里有两个连续引号的(...Extended Properties="";...)。这样编译器会认为是一个引号,可以编译运行,但字符串的值就不是你想要的了。应该改成这样试试:
Extended Properties=\"\";
加载更多回复(12)

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧