VC操作Paradox数据库

czx1234567 2018-04-27 03:39:40
VC怎样操作Paradox数据库呢?

因为要适应某只能识别Paradox数据库文件的软件,要创建Paradox数据库文件。
我偿试使用Ado,但只能读取数据,写入就出错。

CString sPath = _T("D:\\XYZ");
CString ConnectionString;
ConnectionString.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s; Extended Properties=Paradox 5.x;Persist Security Info=False"), sPath);
_ConnectionPtr m_pDb;
_RecordsetPtr m_pRecordset;
AfxOleInit();
try
{
m_pDb.CreateInstance(__uuidof(Connection));
m_pDb->Open(ConnectionString.AllocSysString(),"","",adModeUnknown);
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
return;
}

CString sFile = _T("2111.DB");
ConnectionString.Format(_T("select * from %s"), sFile);
m_pRecordset.CreateInstance(_uuidof(Recordset));
try
{
m_pRecordset->Open(ConnectionString.AllocSysString(),(IDispatch*)m_pDb,adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return;
}
try
{
m_pRecordset->MoveFirst();
m_pRecordset->Move((long)(2));
m_pRecordset ->PutCollect((long)(2), "2222"); //这里出错
m_pRecordset ->Update();
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pDb->Close();


VC有专门针对Paradox数据库的操作方法吗?
...全文
1018 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
czx1234567 2018-05-03
  • 打赏
  • 举报
回复
引用 9 楼 liups 的回复:
再不行的话,使用delphi或c++ builder写一个dll、COM什么的,在VC中调用它
看来只有这样了。
czx1234567 2018-04-28
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
使用 m_pDb->Execute(....)试试
使用 m_pDb->Execute,提示“操作必须使用一个可更新的查询” 但可以创建表,在表中可以插入一条数据,再插入第二条就又出现“操作必须使用一个可更新的查询”的错误。 sql.Format(_T("CREATE TABLE %s(XCoodinate decimal(8,0), YCoodinate decimal(8,0), ZCoodinate decimal(8,0))"), sFileName); m_pDb->Execute(sql.AllocSysString(),&RecordsAffected,adCmdText); sql.Format(_T("INSERT INTO %s (XCoodinate, YCoodinate, ZCoodinate) Values (x1, y1, z1)"), sFileName); m_pDb->Execute(sql.AllocSysString(),&RecordsAffected,adCmdText); sql.Format(_T("INSERT INTO %s (XCoodinate, YCoodinate, ZCoodinate) Values (x2, y2, z2)"), sFileName); m_pDb->Execute(sql.AllocSysString(),&RecordsAffected,adCmdText); 可能还是SQL语句的问题,到底Paradox数据库要怎么写入? 这是为什么?要疯了!
赵4老师 2018-04-28
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
liups 2018-04-28
  • 打赏
  • 举报
回复
再不行的话,使用delphi或c++ builder写一个dll、COM什么的,在VC中调用它
liups 2018-04-28
  • 打赏
  • 举报
回复
Paradox数据库在borland家族中是使用BDE来访问的,况且BDE早就被放弃了,谁会去写一个类? 只是看你在VC中提问,应该是能很快上手c++ builder,所以给你这样的建议
czx1234567 2018-04-28
  • 打赏
  • 举报
回复
引用 4 楼 liups 的回复:
建议使用c++ builder(BDE)开发吧
看到c++ builder有TTable类来操作,VC就没有对应的类吗?
czx1234567 2018-04-28
  • 打赏
  • 举报
回复
引用 5 楼 worldy 的回复:
sql.Format(_T("INSERT INTO %s (XCoodinate, YCoodinate, ZCoodinate) Values (x2, y2, z2)"), sFileName); 红色那几个值应该是数值,如果是字串应该加引号吧?
是数值,为了表示方便才改字符上传的。
liups 2018-04-28
  • 打赏
  • 举报
回复
建议使用c++ builder(BDE)开发吧
worldy 2018-04-28
  • 打赏
  • 举报
回复
sql.Format(_T("INSERT INTO %s (XCoodinate, YCoodinate, ZCoodinate) Values (x2, y2, z2)"), sFileName); 红色那几个值应该是数值,如果是字串应该加引号吧?
worldy 2018-04-27
  • 打赏
  • 举报
回复
使用 m_pDb->Execute(....)试试

4,012

社区成员

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

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