2012-09-26 71 views
1

我必須使用VBA將Word文檔連接到SQL Server才能讀取和寫入記錄。現在,我對連接數據庫的許多不同方式感到困惑。有ADO,ODBC等。我已經看到了連接SQL Server數據庫的不同方式。 一位同事想讓我使用ODBC。Office VBA ODBC到SQL Server

因此:在Office VBA中使用ODBC連接到SQL Server數據庫的最佳方式是什麼?

SELECT和INSERT語句的示例也將被讚賞。

編輯:在VB.Net/C#中是不是有像「System.Data.SqlClient.SqlConnection」和「System.Data.SqlClient.SqlCommand」?

回答

4

此示例使用ODBC:

'Microsoft ActiveX Data Objects x.x library 
Dim cn As New ADODB.connection 
Dim rs As New ADODB.recordset 

    cn.Open "DRIVER={SQL Server};SERVER=srv;" & _ 
     "trusted_connection=yes;DATABASE=test" 

    rs.Open "SELECT * FROM table_1", cn 

本例中使用的OleDb

'Microsoft ActiveX Data Objects x.x library 
Dim cn As New ADODB.connection 
Dim rs As New ADODB.recordset 

    cn.Open "Provider=sqloledb;Data Source=srv;" & _ 
     "Initial Catalog=Test;Integrated Security=SSPI;" 

    rs.Open "SELECT * FROM table_1", cn 

參見:http://www.connectionstrings.com/sql-server-2008

+0

我正在使用'ADODB.Connection.Execute'方法來運行SQL查詢。該方法返回一個(有限的)記錄集,可以像訪問數組一樣訪問該記錄集(指針只能向前移動)。這就是我所尋找的。爲所有東西創建對象都很好,但有時只需要太多的OOP就可以完成簡單的任務。 – wullxz

+0

默認光標是adOpenForwardOnly,還有其他的http://www.w3schools.com/ado/prop_rs_cursortype.asp – Fionnuala

+0

是的,這就是我的意思。我只需要forwardOnly,所以我對使用execute方法返回的內容非常滿意。我也知道可以事先創建記錄集對象,並且具有更少的限制(不知道我在哪裏閱讀)。 – wullxz

0

您的同事可能希望您使用ODBC的原因是您的公司爲每個工作站提供標準化的ODBC連接。

這裏的好處是您不必擔心除登錄/密碼之外的連接屬性,因爲它已全部設置。想象一下,ODBC在軟件(單詞)和服務器之間起作用,當涉及到公司的變化時,它使事情變得更加容易。 (服務器地址可能會更改,IT可以在最終用戶不知情的情況下更改ODBC的設置)

Beste將與您的同事交談並詢問他的問題。另一個原因可能是ODBC可能比ado更快。我也是這樣做的。

+0

沒關係,你能告訴我怎麼打開使用ODBC在VBA的連接?即使對於ODBC,我也發現多個聲稱使用ODBC的howtos,但使用不同的庫和類進行連接。我想有一些簡單的像「System.Data.SqlClient.SqlConnection」在VB.NET/C# – wullxz