怎样实现ADO和PARADOX数据库的连接? 我想用ADO机制把PARADOX数据库中的数据导入到ACCESS数据库中。但我没做过PARADOX数据库,这方面的资料也很少,不知道怎样建立ADO和PARADOX的连接,请各位大哥多多指点哈。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 dim MainCon as new Adodb.ConnectionDatabasePath = txtOldPath.Text '你的数据库路径Mainstr = "Provider=MSDASQL.1;Persist Security Info=False;DRIVER=Microsoft Paradox Driver (*.db );DBQ=" & DatabasePath & "" '连接字符串MainCon.ConnectionString = MainStr MainCon.Open '打开连接 PARADOX??是什么数据库?没有听过。 用这东西的人好像不多,我也是第一次接触到这种数据库。用CB的人可能知道,用VC的人知道的可能不多。所以才请教大虾们,如果分数不够我再加哈,帮帮忙!有“钱”的捧个“钱”场,没“钱”的捧个人场…… 呵呵,这个我刚做过.如果是对本机上的数据表进行操作很简单,如果要操作局域网内的就比较困难了,给你我的一些代码吧: //连接到数据源,只能用ODBC来连接到数据库。 //下面三种连接方式均可,第一、二种可以直接连接,第三种要用户建立指定的系统DSN _ConnectionPtr m_pDb;//("ADODB.CONNECTION");// CString connectsource;// connectsource.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\shared;Extended Properties=Paradox 5.x;Persist Security Info=False",strCTRSRoute);/* connectsource.Format(L"CollatingSequence=ASCII;DBQ=%s\\shared;" \ L"DefaultDir=%s\\shared;Driver={Microsoft Paradox Driver (*.db )};" \ L"DriverId=538;FIL=Paradox 5.X;" \ L"MaxBufferSize=2048;MaxScanRows=8;PageTimeout=600;" \ L"ParadoxNetPath=%s\\shared;ParadoxNetStyle=4.x;ParadoxUserName=admin;" \ L"SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;",strCTRSRoute,strCTRSRoute,strCTRSRoute);*/ CString connectsource="Provider=MSDASQL.1;Persist Security Info=False;Data Source=Projdir";//Initial Catalog=E:\\PW\\CTRS\\SHARED";// TRACE(connectsource); try //检查数据库连接是否正常 { m_pDb.CreateInstance(__uuidof(Connection)); m_pDb->ConnectionTimeout=10; m_pDb->CommandTimeout=20; if(m_pDb->State!=adStateClosed) { m_pDb->Close(); m_pDb->Open((_bstr_t)connectsource,"","",adModeUnknown); } else { hr=m_pDb->Open((_bstr_t)connectsource,"","",adModeUnknown); } } catch(_com_error e) //捕捉异常 { LogAdoErrorImport(m_pDb); } _RecordsetPtr m_pRst("ADODB.RECORDSET"); try { //m_pRst.CreateInStance(__uuidof(_Recordset)); m_pRst->PutRefActiveConnection(m_pDb); m_pRst->PutSource("select Proj_ID , PROJECT from projdir.db"); m_pRst->Open(vtMissing,vtMissing,adOpenStatic, adLockReadOnly,adCmdText); _variant_t strColName1,strColName2; Fields * fields=NULL; while(!m_pRst->adoEOF) { LPWSTR strID,strName; strColName1=m_pRst->Fields->GetItem((long)0)->Value; strColName2=m_pRst->Fields->GetItem((long)1)->Value; strID=(BSTR)strColName1.pbstrVal; strName=(BSTR)strColName2.pbstrVal; FillListCtrl(strID,strName); m_pRst->MoveNext(); } m_pRst->Close(); m_pRst=NULL; m_pDb->Close(); m_pDb=NULL; } catch(_com_error e) { LogAdoErrorImport(m_pDb);//出错信息显示,需要自定义// CString errormessage;// errormessage.Format(TEXT("打开数据库失败\r\n错误信息:%s"),e.ErrorMessage());// AfxMessageBox(errormessage); if(m_pDb->State==adStateOpen) { m_pDb->Close(); m_pDb=NULL; } } 此外,如果在局域网内,要在包含有PARADOX表的服务器上安装BDE,否则会出现“外部表不是预期格式”的错误,切记! paradox用delphi的就很清楚了用vc连ado还真是麻烦,delphi要简单很多,不过,发现vc健壮性很好------------------------------------心中多少的创伤,不可抵挡的空虚,卑躬屈膝的一生,今天只想冲出那枷锁,就要象狂人,金属者---金属狂人 如何用c#实现像Q+一样滑屏的效果?用dotnetbar可以实现吗? 请教:如何用IOCP接收多个UDP客户端的数据。谢谢! 我只是想知道vs2008里vc++中如何简单使用水晶报表而已。。。 有谁知道这是什么错误 请教一个DLL问题 有根内存条上的某一个内存颗粒坏了 有什么办法可以屏蔽这颗坏了的内存颗粒??? CAnimateCtrl不好用? 如何将BMP图片转成JPG格式. 如何让程序不在Ctrl+Alt+Del中显示? 结构型数组 在串口编程时,当遇到0时,程序就将停止传送,应该怎样解决在2进制数组中传送0的问题?? 线程中的代码有无功能限制
DatabasePath = txtOldPath.Text '你的数据库路径
Mainstr = "Provider=MSDASQL.1;Persist Security Info=False;DRIVER=Microsoft Paradox Driver (*.db );DBQ=" & DatabasePath & "" '连接字符串
MainCon.ConnectionString = MainStr
MainCon.Open '打开连接
??是什么数据库?
没有听过。
//连接到数据源,只能用ODBC来连接到数据库。
//下面三种连接方式均可,第一、二种可以直接连接,第三种要用户建立指定的系统DSN
_ConnectionPtr m_pDb;//("ADODB.CONNECTION");
// CString connectsource;
// connectsource.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\shared;Extended Properties=Paradox 5.x;Persist Security Info=False",strCTRSRoute);
/*
connectsource.Format(L"CollatingSequence=ASCII;DBQ=%s\\shared;" \
L"DefaultDir=%s\\shared;Driver={Microsoft Paradox Driver (*.db )};" \
L"DriverId=538;FIL=Paradox 5.X;" \
L"MaxBufferSize=2048;MaxScanRows=8;PageTimeout=600;" \
L"ParadoxNetPath=%s\\shared;ParadoxNetStyle=4.x;ParadoxUserName=admin;" \
L"SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;",strCTRSRoute,strCTRSRoute,strCTRSRoute);
*/
CString connectsource="Provider=MSDASQL.1;Persist Security Info=False;Data Source=Projdir";//Initial Catalog=E:\\PW\\CTRS\\SHARED";
// TRACE(connectsource);
try //检查数据库连接是否正常
{
m_pDb.CreateInstance(__uuidof(Connection));
m_pDb->ConnectionTimeout=10;
m_pDb->CommandTimeout=20;
if(m_pDb->State!=adStateClosed)
{
m_pDb->Close();
m_pDb->Open((_bstr_t)connectsource,"","",adModeUnknown);
}
else
{
hr=m_pDb->Open((_bstr_t)connectsource,"","",adModeUnknown);
}
}
catch(_com_error e) //捕捉异常
{
LogAdoErrorImport(m_pDb);
}
_RecordsetPtr m_pRst("ADODB.RECORDSET");
try
{
//m_pRst.CreateInStance(__uuidof(_Recordset));
m_pRst->PutRefActiveConnection(m_pDb);
m_pRst->PutSource("select Proj_ID , PROJECT from projdir.db");
m_pRst->Open(vtMissing,vtMissing,adOpenStatic, adLockReadOnly,adCmdText);
_variant_t strColName1,strColName2;
Fields * fields=NULL;
while(!m_pRst->adoEOF)
{
LPWSTR strID,strName;
strColName1=m_pRst->Fields->GetItem((long)0)->Value;
strColName2=m_pRst->Fields->GetItem((long)1)->Value;
strID=(BSTR)strColName1.pbstrVal;
strName=(BSTR)strColName2.pbstrVal;
FillListCtrl(strID,strName);
m_pRst->MoveNext();
}
m_pRst->Close();
m_pRst=NULL;
m_pDb->Close();
m_pDb=NULL;
}
catch(_com_error e)
{
LogAdoErrorImport(m_pDb);//出错信息显示,需要自定义
// CString errormessage;
// errormessage.Format(TEXT("打开数据库失败\r\n错误信息:%s"),e.ErrorMessage());
// AfxMessageBox(errormessage);
if(m_pDb->State==adStateOpen)
{
m_pDb->Close();
m_pDb=NULL;
}
}
此外,如果在局域网内,要在包含有PARADOX表的服务器上安装BDE,否则会出现“外部表不是预期格式”的错误,切记!
用vc连ado还真是麻烦,delphi要简单很多,不过,发现vc健壮性很好
------------------------------------
心中多少的创伤,不可抵挡的空虚,卑躬屈膝的一生,今天只想冲出那枷锁,就要象狂人,金属者---金属狂人