C++/cli 引用ADOX 动态创建ACCESS有bug?

明寿 2013-02-22 12:25:31
VS2005
在C#中引用ADOX无问题。

C++/Cli中引用后,
......
ADOX::CatalogClass^ cat = gcnew ADOX::CatalogClass();
cat->Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";"); //创建数据表
ADOX::TableClass^ tabData = gcnew ADOX::TableClass();
tabData->ParentCatalog = cat;
......
tabData->Columns->Append(.......);//这句出错,居然没有提示没有columns这个接口, 而C#无问题,

这是什么情况,哪位高人知道?
...全文
330 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
明寿 2013-02-22
  • 打赏
  • 举报
回复
c++/cli的代码和C#比起来,实在是难看。
明寿 2013-02-22
  • 打赏
  • 举报
回复
版主是热心人,非常感谢!确实是语法问题,这个如果照搬C#的源码似乎行不通。 总算在网上找到一点参考线索。 http://social.technet.microsoft.com/Forums/zh-CN/sqldataaccess/thread/fe90b321-f6e5-4f88-965e-0633ea56fae2 问题解决,修正后的代码如下: ADOX::Catalog^ cat = gcnew ADOX::Catalog(); cat->Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";"); //创建数据库 ADOX::Table^ tab = gcnew ADOX::Table(); //创建数据表Data tab->Name = "Data"; //创建新列new_col ADOX::Column^ col = gcnew ADOX::Column(); col->default = "new_col"; col->Type = ADOX:: DataTypeEnum:: adWChar; col->DefinedSize = 255; //加入列到tab tab->default->Append(col, ADOX::DataTypeEnum::adWChar, 255); //加入表到cat,关键一步 cat->default->Append(tab); //检查是否成功?不报错即成功 ADOX::Table^ tab2 = cat["Data"]; ADOX::Column^ col2 = tab["new_col"];
真相重于对错 2013-02-22
  • 打赏
  • 举报
回复
没有用过adox,我的解答只是针对你的语法错误,至于为何不能建立表,应该是你调用的问题
明寿 2013-02-22
  • 打赏
  • 举报
回复
顶,不知VS2010会不会有这个问题
明寿 2013-02-22
  • 打赏
  • 举报
回复
引用 1 楼 hdt 的回复:
tabData->default->Append(...);
这个。。。 用这个还是没效果哦,仍然是创建了一个空数据库。 我是想在数据库里创建一个表,然后再创建N个列,在网上找了半天都是C#的例子,但我得用C++/cli完成, C#的代码转到cli中来发现玩不出来了,通过对象浏览器是可以看到TableClass是有Columns这个接口的,但实际上又不能用。 真够郁闷的,折腾了2天还是没招
真相重于对错 2013-02-22
  • 打赏
  • 举报
回复
tabData->default->Append(...);

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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