通过VBA / Excel建立到数据库的只读ADODB连接

时间:2019-05-17 09:48:08

标签: sql excel vba adodb

我已经使用此代码很长时间了,但是最近有一位客户问我是否可以将连接建立为只读连接,以确保在使用我的excel工具时没有数据被覆盖

从文件中读取数据时,有很多以前的文章解决了这个问题,但是在连接到数据库时我找不到任何答案(嗯,至少没有一个能奏效)。

我通常将代码放在类模块中,并在需要提交SQL的代码中将其变暗。在类模块中拥有它的伟大之处在于,在执行停止后,打开连接似乎没有任何问题。

任何人都不知道要添加到此代码中的内容,以确保该连接不能用于提交更新SQL吗?

是的,理想情况下,这将在SQL服务器上而不是在我的一端进行设置,但是...:)


Option Explicit

Public Connection As ADODB.Connection

Public Sub init()

    Dim Server As String
    Dim Database As String

    Server = Worksheets("K").Cells(3, 3) '  <== This cell contains the name of the Database Server
    Database = Worksheets("K").Cells(3, 4) '  <== This cell contains the name of the Database

    Set Connection = New ADODB.Connection

    With Connection
        .Provider = "MSDASQL"
        .ConnectionString = "DRIVER={SQL Server};SERVER=" + Server + ";DATABASE=" + Database
        .ConnectionString = .ConnectionString + ";Trusted_Connection=Yes"
        .CommandTimeout = 60000
        .Open
    End With

End Sub

Public Function RunSQL(SQL As String) As ADODB.Recordset

  Set RunSQL = Connection.Execute(SQL)

End Function

0 个答案:

没有答案