用VB+ado 该怎么来实现如下问题:Access 数据库 sys.mdb 里有5个表: aa,bb,cc,dd,ee
SqlServer 的数据库 "sys".里没有上面的5个表。
有什么好方法,可以实现把,aa,bb,cc,dd,ee 表的结构和数据导入到"sys"数据库里面。谢谢!

解决方案 »

  1.   

    列出SQL SERVER数据库中所有表及字段信息    lihonggen0(原作)  
      
    程序思想:用SELECT name From sysobjects WHERE xtype = 'u'得到所有表,然后循环打开表,根据Rs_Colums.Fields(I).Name   得到字段名,FieldType(Rs_Colums.Fields(I).Type)  得到字段类型,Rs_Colums.Fields(I).DefinedSize  '宽度由于Rs_Colums.Fields(I).Type返回类型是数字,程序中写了一个FieldType函数转化成中文类型Private Sub Command1_Click()
    Dim Cn As New ADODB.Connection
    Dim Rs_Table As New ADODB.Recordset
    Dim Rs_Colums As New ADODB.Recordset    With Cn   '定义连接
            .CursorLocation = adUseClient
            .Provider = "sqloledb"
            .Properties("Data Source").Value = "LIHG"
            .Properties("Initial Catalog").Value = "NorthWind"
            .Properties("User ID") = "sa"
            .Properties("Password") = "sa"
            .Properties("prompt") = adPromptNever
            .ConnectionTimeout = 15
            .Open
            
            If .State = adStateOpen Then
                Rs_Table.CursorLocation = adUseClient   '得到所有表名
                Rs_Table.Open "SELECT name From sysobjects WHERE xtype = 'u'", Cn, adOpenDynamic, adLockReadOnly
                Rs_Table.MoveFirst
                Do While Not Rs_Table.EOF
                    Debug.Print Rs_Table.Fields("name")
                    Rs_Colums.CursorLocation = adUseClient
                    Rs_Colums.Open "select top 1 * from [" & Rs_Table.Fields("name") & "]", Cn, adOpenStatic, adLockReadOnly
                    For I = 0 To Rs_Colums.Fields.Count - 1   ' 循环所有列
                        Debug.Print Rs_Colums.Fields(I).Name   '字段名
                        Debug.Print FieldType(Rs_Colums.Fields(I).Type)  '字段类型
                        Debug.Print Rs_Colums.Fields(I).DefinedSize  '宽度
                    Next
                    Rs_Colums.Close
                    Rs_Table.MoveNext
                Loop
                Rs_Table.Close
                Set Rs_Colums = Nothing
                Set Rs_Table = Nothing
            
            Else
                MsgBox "数据库连接失败,请找系统管理员进行检查 !", 16, cProgramName
                End
            End If
        End With
    End Sub'*********************************************************
    '* 名称:FieldType
    '* 功能:返回字段类型
    '* 用法:FieldType(nType as integer)
    '*********************************************************
     Function FieldType(nType As Integer) As String
        Select Case nType
            Case 128
                FieldType = "BINARY"
            Case 11
                FieldType = "BIT"
            Case 129
                FieldType = "CHAR"
            Case 135
                FieldType = "DATETIME"
            Case 131
                FieldType = "DECIMAL"
            Case 5
                FieldType = "FLOAT"
            Case 205
                FieldType = "IMAGE"
            Case 3
                FieldType = "INT"
            Case 6
                FieldType = "MONEY"
            Case 130
                FieldType = "NCHAR"
            Case 203
                FieldType = "NTEXT"
            Case 131
                FieldType = "NUMERIC"
            Case 202
                FieldType = "NVARCHAR"
            Case 4
                FieldType = "REAL"
            Case 135
                FieldType = "SMALLDATETIME"
            Case 2
                FieldType = "SMALLMONEY"
            Case 6
                FieldType = "TEXT"
            Case 201
                FieldType = "TIMESTAMP"
            Case 128
                FieldType = "TINYINT"
            Case 17
                FieldType = "UNIQUEIDENTIFIER"
            Case 72
                FieldType = "VARBINARY"
            Case 204
                FieldType = "VARCHAR"
            Case 200
                FieldType = ""
        End Select
    End Function
    此程序只是一个雏形,可以在此基础上开发成一个工具使用本程序在:VB 6.0  ,SQL SERVER 2000下运行通过注程序中须引用ActiveX Data Objects (ADO)
      

  2.   

    http://expert.csdn.net/Expert/topic/2265/2265863.xml?temp=.2166864
      

  3.   

    用SQL Server DTS设计器自动生成的代码。
      

  4.   

    用SQLServer的DTC吧。只有一个文件的华,直接导就行,一定要做到程序里的话,你可以保存成模板文件。
      

  5.   

    用sql server 的导入导出窗口可以导入。导入到sqlserver时创建新表不就行了吗?
      

  6.   

    谢谢你们,我要用程序实现!还有能不能不要去建ODBC,因为只是为了建几个表而让用户自己去建ODBC是不现实的,。请再帮帮忙!
      

  7.   

    http://expert.csdn.net/Expert/topic/2265/2265863.xml?temp=.2166864,所说的可以不建ODBC的。因为这个ODBC中已经存在了