VC连接数据库失败

祸起蛋炒饭 2015-11-17 03:37:19
CoInitialize(NULL);

HRESULT hr = S_FALSE;
ULONG ulRow = 0;

_ConnectionPtr adocnct = NULL;
_RecordsetPtr Rowset;;
_bstr_t bsConn = "Provider=sqloledb;Initial Catalog=student;Data Source=********,***;";

try
{
TESTHR(adocnct.CreateInstance(__uuidof(Connection)));
//adocnct.CreateInstance("ADODB.Connection");
adocnct->ConnectionTimeout = 30;
adocnct->Open(bsConn, _T("sa"), _T("admin"), adConnectUnspecified);
}
catch(_com_error &e)
{
ErrorPtr pErr = NULL;
if (adocnct->Errors->Count > 0)
{
int n = adocnct->Errors->Count;
for (int i=0; i<n; i++)
{
pErr = adocnct->Errors->GetItem(i);
printf("Error number: %x\t%s\n", pErr->Number,(LPCSTR)pErr->Description);
}
}

_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());

printf("Error\n");
printf("\tCode = %08lx\n", e.Error());
printf("\tCode meaning = %s\n", e.ErrorMessage());
printf("\tSource = %s\n", (LPCSTR) bstrSource);
printf("\tDescription = %s\n", (LPCSTR)bstrDescription);

}
我的代码是这个 我在本机测试一直连接不成功 open那块一直卡 但是我上传到服务器上运行 就能运行并连接成功 求哪位大神给个解决方案
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘雨 2015-11-24
  • 打赏
  • 举报
回复
Data Source=********,***;" datasource 是ip 和端口吗?ip是什么,端口是什么?端口是3389吗 IP是内网IP,还是公网IP 如果是IP和端口连接的 在你内网的电脑的命令行提示符下,输入如下命令,#号是ip地址,确认数据库服务器是否能通过网络连通。 telnet ###.###.###.### 3389 如果数据库服务器是相同的,从内网电脑不行,从服务器连接可以。说明你的数据库服务器防火墙限制了只能服务器的IP连接。或者你的服务器和你的数据库服务器是同一台。那么检查你的服务器防火墙设置,是否允许外网连接3389端口。
_菜菜 2015-11-20
  • 打赏
  • 举报
回复
你新建一个文本文件,把扩展名改成.udl,再双击这个文件,配置好连接后,用记事本打开这个文本文件,里边的串就是连接串,直接复制过来就可以了
大鱼> 2015-11-19
  • 打赏
  • 举报
回复
adocnct->Open(bsConn, _T("sa"), _T("admin"), adConnectUnspecified); 你改成我给你发的那个的时候,这句话改了吧。
大鱼> 2015-11-19
  • 打赏
  • 举报
回复
还有一点可能你的数据库本身就有问题。 我给你发的这个链接语句是没有问题的,我一直是这样操作的。 我觉得你还是应该把这些写在配置文件中比较好。
祸起蛋炒饭 2015-11-18
  • 打赏
  • 举报
回复
引用 1 楼 qq_17486399 的回复:
bsConn = "Provider=sqloledb;Initial Catalog=student;Data Source=********,***;" 改成这样试试 bsConn = "PROVIDER=SQLOLEDB;Data Source=****;Database=**;Uid=**;Pwd=**;"
我试过还是不行
zyq5945 2015-11-18
  • 打赏
  • 举报
回复
看下这个,或者用ADO助手试试。
大鱼> 2015-11-17
  • 打赏
  • 举报
回复
bsConn = "Provider=sqloledb;Initial Catalog=student;Data Source=********,***;" 改成这样试试 bsConn = "PROVIDER=SQLOLEDB;Data Source=****;Database=**;Uid=**;Pwd=**;"

4,012

社区成员

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

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