主题:[讨论]高手进来,史上最难的基本数据库操作问题:复制表
有两个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);
//错误提示:对象已在集合中。无法追加。(在最后一句)
要求:在复制前,判断 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);
//错误提示:对象已在集合中。无法追加。(在最后一句)