Ms access 使用ADO将SQL Server Compact 3.5数据库连接到MS Access 2003?

Ms access 使用ADO将SQL Server Compact 3.5数据库连接到MS Access 2003?,ms-access,sql-server-ce,Ms Access,Sql Server Ce,是否可以从MS Access 2003中写入连接并打开SQL Compact 3.5数据库?我希望能够使用MS Access 2003操作SQL Compact 3.5数据库中的数据。如果可能,那么将使用哪些语句打开数据库?虽然我没有专门使用SQL Compact进行尝试,但连接到服务器应该是标准的: 检查可用工具中是否正确引用了ADODB文件(msado21.tlb) 将您的连接字符串写在如下位置: MyConnectionString=“Provider=SQLOLEDB.1;集成安全性=S

是否可以从MS Access 2003中写入连接并打开SQL Compact 3.5数据库?我希望能够使用MS Access 2003操作SQL Compact 3.5数据库中的数据。如果可能,那么将使用哪些语句打开数据库?

虽然我没有专门使用SQL Compact进行尝试,但连接到服务器应该是标准的:

  • 检查可用工具中是否正确引用了ADODB文件(msado21.tlb)
  • 将您的连接字符串写在如下位置:

    MyConnectionString=“Provider=SQLOLEDB.1;集成安全性=SSPI;持久安全性信息=False;初始目录=YourDatabaseName;数据源=YourSQLServerInstanceName”

    此字符串是为“集成安全性”上下文编写的。在cas中,如果要更改SQL安全上下文,请选中以更新字符串。理想情况下,此字符串应在代码中声明为公共变量

  • 完成此操作后,您可以打开ADODB记录集并开始操作它:

    public sub connectionTest
    Dim activeConnection as ADODB.connection, _
        activeRecordset as ADODB.recordset
    
    Set activeConnection = New ADODB.connection
    activeConnection.connectionString = myCOnnectionString
    activeConnection.open
    
    set activeRecordset = New ADODB.recordset
    'this will open a read-only recordset'
    activeRecordset.open _
        "SELECT * FROM myTableName", _
        activeConnection, _
        adOpenStatic, _
        adLockReadOnly
    
    if activeRecordset.EOF and activeRecordset.BOF then
        debug.print "No records in this table"
    else
        activeRecordset.moveFirst
        do while not activeRecordset.EOF
            debug.print activerecordset.fields("myFieldName").value
            activeRecordset.moveNext
        loop
    endif
    
    activeRecordset.close
    set activeRecordset = nothing
    activeConnection.close
    set activeConnection = nothing
    
    end sub
    

    这只是一个想法,我无法确认它是否会起作用,但鉴于SQL Compact缺少ODBC驱动程序,并且您不能拥有链接表,或许您可以使用SQL Compact的OLEDB连接字符串作为Access中保存的QueryDef的源连接字符串。如果您能使其正常工作,您就可以为每个表创建一个已保存的QueryDef,然后像使用链接表一样使用它们

    我无法在我的机器上测试它,因为我安装的唯一OLEDB提供商是Jet,Access似乎不喜欢它

    但也许值得一试。这可能行不通,因为我在Access中找不到任何人这样做过。但我真的不明白为什么它不起作用

    不过,我可能还是错了