其实我也没办法 可是一定要用foxpro的数据库
database.dbc 是数据库
包含jsda.dbf这个表
我先#import "msado15.dll" no_namespace rename("EOF","adoEOF")
然后与数据库建立连接:
AfxEnableControlContainer();
AfxOleInit();
HRESULT hr;
hr = m_pConnection.CreateInstance("ADODB.Connection");
hr = m_pConnection->Open"Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBF;" & _
"SourceDB=databasepath\" & _
"Exclusive=No;","","",adModeUnknown);
到这里都一直没出异常可是但我想打开jsda.dbf这个表的时候就出现异常了↓
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM jsda",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
执行到这里就出现异常了,为什么啊?
应该怎么修改啊?
database.dbc 是数据库
包含jsda.dbf这个表
我先#import "msado15.dll" no_namespace rename("EOF","adoEOF")
然后与数据库建立连接:
AfxEnableControlContainer();
AfxOleInit();
HRESULT hr;
hr = m_pConnection.CreateInstance("ADODB.Connection");
hr = m_pConnection->Open"Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBF;" & _
"SourceDB=databasepath\" & _
"Exclusive=No;","","",adModeUnknown);
到这里都一直没出异常可是但我想打开jsda.dbf这个表的时候就出现异常了↓
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM jsda",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
执行到这里就出现异常了,为什么啊?
应该怎么修改啊?
先新建一“*.txt"文件 ,然后改名为“*.udl”,然后打开运行,再对其进行配置(即对foxpro数据库进行连接,直到调试通过后),再把这文件改回为“*.txt”,打开它,看看里面是什么内容。再结合
bt=(_bstr_t)"Provider=SQLOLEDB.1;Persist Security Info=False;User ID="+(_bstr_t)m_strSUserName+(_bstr_t)";Password="+(_bstr_t)m_strSPassword+(_bstr_t)";Initial Catalog=SQL"+(_bstr_t)";Data Source="+(_bstr_t)m_strSServerName;
把“*.txt”中的代码代替bt就行。
再:
::CoInitialize(NULL); //Initialize COM
try
{
hr=m_pCon.CreateInstance(__uuidof(Connection));
..........
hr=m_pCon->Open (bt,_bstr_t(""),_bstr_t(""),adModeUnknown);