小弟现在遇到如下情况,做了一个采集数据库数据的程序,在SERVER2003(32位)下面编译通过,也可以运行(运行的是DEBUG模式生成的EXE文件)。用ODBC方式去连接的。
问题是把EXE文件放到server2008(64位)下就无法运行。运行库也已经X86和X64都安装过了。报RUNTIME error的错误。
把程序分段测试,屏蔽了OPEN函数运行正常,一旦恢复就会出错。
最后发现调试到open函数的时候出错,内存溢出。
想请教下,出现这样的情况,是ODBC配置的问题还是函数的问题?
PS。用的是VS2008跪求答案啊
问题是把EXE文件放到server2008(64位)下就无法运行。运行库也已经X86和X64都安装过了。报RUNTIME error的错误。
把程序分段测试,屏蔽了OPEN函数运行正常,一旦恢复就会出错。
最后发现调试到open函数的时候出错,内存溢出。
想请教下,出现这样的情况,是ODBC配置的问题还是函数的问题?
PS。用的是VS2008跪求答案啊
但是超时的话应该是报TNS问题吧,不会是RUNTIME问题啊,而且2008上面PL/SQL连接正常
调试过了,但是预编译头出现问题:错误 1 fatal error C1083: 无法打开编译器中间文件:“C:\Users\ADMINI~1\AppData\Local\Temp\2\_CL_7c282027sy”: No such file or directory c1xx GetData
MFC连接sql server 2000并且查询:
首先建立对话框程序,摆放一个列表框和一个按钮,修改后者属性,将ID改为IDC_BTN_QUERY,标题设为查询。
在stdafx.h中加入:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
在void CAdoDlg::OnBtnQuery()添加下面代码:(三种方式)
首先在AdoDlg.cpp中添加:
HCURSOR CAdoDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
第一种:
CoInitialize(NULL);//初始化COM库
_ConnectionPtr pConn(__uuidof(Connection));//实例化一个connection对象pConn
_RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
//连接字符串说明:Provider表示驱动引擎;User ID表示用户名;Password表示口令;Initial Catalog表示数据库名
pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=xx;Password=;";
try
{
pConn->Open("","","",adConnectUnspecified);
}
catch(_com_error e)
{
MessageBox(e.Description());//输出异常原因。
return;
}
pRst=pConn->Execute("select * from ..",NULL,adCmdText);
while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
(_bstr_t)pRst->GetCollect(".."));
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();//释放COM库
第二种:
将上面红色语句删除,添加:
pRst->Open("select * from sysservers ",_variant_t((IDispatch*)pConn),
adOpenDynamic,adLockOptimistic,adCmdText);
第三种:
在上面蓝色语句后添加:
_CommandPtr pCmd(__uuidof(Command));//实例化一个Command对象pCmd
在将第二种添加的语句删除,添加:
pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
pCmd->CommandText="select * from sysservers ";
pRst=pCmd->Execute(NULL,NULL,adCmdText);
在上面绿色语句后添加:
pCmd.Release();
多表查询有重名的列名用别名解决:
select A.name as a1,B.name a2..
(_bstr_t)pRst->GetCollect("a1")
(_bstr_t)pRst->GetCollect("a2")
sql server 2000插入,删除,修改:
在上面蓝色语句后添加:
_variant_t RecordsAffected;
在上面粉色语句后修改:
pConn->Open("","",&RecordsAffected,adConnectUnspecified);
将上面橙色语句删除。