回 帖 发 新 帖 刷新版面

主题:[讨论]高手进来,史上最难的基本数据库操作问题:复制表

有两个ACCESS数据库 A和 B,我要将数据库 A 中的Report表完全复制到数据库 B 中,该怎么做?

    要求:在复制前,判断 B 中是否存在Report表,如果不存在,则直接复制。

    如果存在,则判断B 中的Report表和A 中的Report表的结构是否完全一致(包括字段、类型、说明、主建、默认值等),如果结构不完全相等,则终止拷贝; 如果完全相等,则删除B中的Report,以A中的Report 替换。

  说白了,上述问题包含两个关键操作:

  (1)在不同的数据库之间拷贝表的问题
  (2)判断不同数据库间两表的结构是否完全一致

  我问的都是最基本的操作,但是我在百度上搜不到解决方案,只好请高手指点。

  下面再贴我写的程序:

      ADOX.Catalog catalog = new Catalog();
            ADODB.Connection cn = new ADODB.Connection();
            cn.Open(connectionstringA, null, null, -1);
            catalog.ActiveConnection = cn;

            ADOX.Catalog catalog2 = new Catalog();
            ADODB.Connection cn2 = new ADODB.Connection();
            cn2.Open(ConnectionStringB, null, null, -1);
            catalog2.ActiveConnection = cn2;

            ADOX.Table table = new ADOX.Table();
            table = catalog.Tables["report"];
            catalog2.Tables.Append(table);

//错误提示:对象已在集合中。无法追加。(在最后一句)

回复列表 (共3个回复)

沙发

1、很多对于数据库的操作为什么不通过数据库管理软件的导入导出实现呢?
2、catalog2.Tables中是否已经存在表report呢?不知道添加对catalog2.Tables["report"]存在与否的判断能不能实现。

板凳

[quote]1、很多对于数据库的操作为什么不通过数据库管理软件的导入导出实现呢?
2、catalog2.Tables中是否已经存在表report呢?不知道添加对catalog2.Tables["report"]存在与否的判断能不能实现。[/quote]

你第一点,你用c#给客户开发软件,当中用到数据导出备份功能,你想叫客户直接使用数据库么?那客户为什么要把项目交给你?

3 楼

表的结构可以利用.net OleDb连接的GetOleDbSchemaXXX系列方法来获取

我来回复

您尚未登录,请登录后再回复。点此登录或注册