大家好,前几天关于(VC+ADO)怎么创建.mdb文件的问题得到了解答!感谢马江王,他提供了DAO与ADO共存的办法;但是我最后是用水银的ADO与ADOX共存的办法去做的!再次感谢!*************************************************************************今天的问题是,我已经连接到了SQL SERVER,并且已经建立了一个空的ACCESS数据库(没有表在其中)。请问各位,我要怎么才能把SQL SERVER中的一个表完全复制到这个空的ACCESS数据库中?(我使用的是VC6.0+ADO&ADOX)感谢大家!希望多给点建议!水银大哥,继续帮兄弟哦!

解决方案 »

  1.   

    DTS微软已经有现成的东西,重复劳动。
      

  2.   

    1:通过工具DTS的设计器进行导入或导出
    2:利用Bcp工具
    3. 在应用程序中定制 
    1> select ... into new_tablename where ... 
    2> insert (into) old_tablename select ... from ... where ...
      

  3.   

    DTS?哪位能够说的详细一些?我用的是ADO,那我该怎么把这个东西用到我的程序里面呢?万分感谢!要是还有别的办法,也请大家说说!
      

  4.   

    DTS是一种导入\导出数据工具。
    在所有的数据转换服务 (DTS) 工具中,DTS 导入/导出向导为在 OLE DB 数据源之间复制数据提供了最简单的方法。在连接到源和目的之后,可以选择要导入或导出的数据,并可对要复制的数据应用各种转换
      

  5.   

    啊????大哥!怎么越说越笼统了?能不能具体些啊?比如我怎么在我的程序里用?需要不需要加什么控件或者包含什么头文件?我连接数据库时,是否使用同一个_ConnectionPtr?或是同一个_RecordsetPtr?有没有示例的代码啊?谢谢谢谢!
      

  6.   

    天啊!又一天了!什么是DTS??水银啊?各位星星啊!!!!救命啊!
      

  7.   

    1,如果在目标数据库有对应的表,那么打开各自的表,只要表的结构相同很好办的
    _variant_t vtData;
    vtData=pOracleSet->GetFields()->GetItem(field_name)->Value;
    pSQLSet->GetFileds()->GetItem(field_name)->Value=vtData;
    2,如果目标数据库没有对应的表,那么用SQL语句在目标数据库建立一张对应结构的表,再进行复制
    第二种方案就是采用dts:
    可以查看Sql server的联机帮助,在Sql server应用程序下面
    还可以参考这片
    http://www.codeproject.com/database/dts.asp
      

  8.   

    水银好!我昨天很忙,下午才看到你的回复!我看了一吓DTS,呵呵~~~~没看懂!好象你提供的第一个方法要更简单一些?有没有办法自动获得SQL数据库中一个表的各个字段的属性和名字啊?那样就可以自动创建一个空表,然后后等待复制?
      

  9.   

    可以通过field属性获取,比如pOracleSet->GetFields()->GetItem(field_name)->DefinedSize;还有name等等
      

  10.   


    我现在连接到SQL数据库是没问题的!要取这个数据库的3个表,我想一个一个做也一样!是不是要先声明一个_RecordsetPtr对象,然后用它去取得表的信息?然后再连接ACCESS数据库,然后用这些取得的信息去创建表呢?HOHO~~~~能不能像上次一样给点代码啊?
      

  11.   

    对的,最近忙啊,job hunting and paper writing,没有时间哦SQL Server Data Type    ADO Data Type  
    bigint                  adBigInt 
    binary                  adBinary 
    bit                     adBoolean 
    char                    adChar 
    datetime                adDBTimeStamp 
    decimal                 adNumeric 
    float                   adDouble 
    image                   adVarbinary 
    int                     adInteger 
    money                   adCurrency 
    nchar                   adWChar 
    ntext                   adWChar 
    numeric                 adNumeric 
    nvarchar                adWChar 
    real                    adSingle 
    smalldatetime           adTimeStamp 
    smallint                adSmallInt 
    smallmoney              adCurrency 
    sql_variant             adVariant 
    sysname                 adWChar 
    text                    adChar 
    timestamp               adBinary 
    tinyint                 adVarbinary 
    uniqueidentifier        adGUID 
    varbinary               adVarbinary 
    varchar                 adChar
      

  12.   

    可以使用adox 的table对象,vb的代码如下,可以改成vc的
        Dim tbl As New Table
        Dim cat As New ADOX.Catalog
        
        ' Open the Catalog.
        cat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & _
            "Data Source='c:\Program Files\Microsoft Office\" & _
            "Office\Samples\Northwind.mdb';"
        
        tbl.Name = "MyTable"
        tbl.Columns.Append "Column1", adInteger
        tbl.Columns.Append "Column2", adInteger
        tbl.Columns.Append "Column3", adVarWChar, 50
        cat.Tables.Append tbl
        Debug.Print "Table 'MyTable' is added."
        
        'Delete the table as this is a demonstration.
        cat.Tables.Delete tbl.Name
        Debug.Print "Table 'MyTable' is deleted."
        
        'Clean up
        Set cat.ActiveConnection = Nothing
        Set cat = Nothing
        Set tbl = Nothing
        Exit Sub
      

  13.   

    好问题,我现在也有类似的问题,大家说来看看
    我的问题是:
    我现在编一个程序,实现从DBF表到SQL Server的转换:
    我用ADO+VC做
    分别为两个数据库建里一个Conn对象
    现在问题是:
    我想把DBF中的一个表拷贝到SQL Server中,但SQL Server中还没有
    定义相同的表
      

  14.   

    两个recordset传值问题
    for(int i=0;i<Count1;i++){
    pRecordSet2->AddNew();
    pRecordSet2->Fields->GetItem((long)i)->Value=pRecordSet1->Fields->GetItem((long)i)->Value;
    pRecordSet2->Update();
    }
    为什么会错?
    出错类型:This application has requested th e TRuntime to terminate it in an unusual way
      

  15.   

    直接进行数据库导入导出就行
    大不了将SQL的表导出为文本文件,再将文本文件导入为ACCESS
      

  16.   

    只用一条sql server 的sql语句就行了
    insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','d:\aa.mdb';'admin';'', tablename) (field_1,field_2.....) select field_1,field_2..... from tablename1