Вы можете обращаться к базам данным и таблицам Visual FoxPro в Visual Studio с помощью Visual FoxPro OLE DB Provider. Visual FoxPro OLE DB Provider доступен через Visual Studio Server Explorer или через использование строки соединения в программном коде.
Доступ к источникам данных Visual FoxPro Data Sources через Visual Studio Server Explorer
Вы можете обращаться к базам данным и таблицам Visual FoxPro в Visual Studio введением их в списое соединений с данными, который появляется в панели Visual Studio Server Explorer. Для начала вам необходимо указать соединение через Visual FoxPro OLE DB Provider к желаемым базам данных и таблицам. Затем вы можете выбрать базы данных или таблицы для того, чтобы они появились в панели Visual Studio Server Explorer pane.
![]() |
---|
У вас есть возможность указать папку желаемой базы данных или таблицы Visual FoxPro предоставив путь и имя файла или просто найти ее на диске просмотром. |
Для соединения к базе данных или таблице Visual FoxPro через Visual FoxPro OLE DB Provider
Откройте Visual Studio.
Из меню View выберите Server Explorer.
В панели Server Explorer выполните щелчок по правой клавише мыши на Data Connections и затем щелкните на Add Connection.
В диалоговом окне Data Link Properties щелкните на закладке Provider tab.
Выберите Microsoft OLE DB Provider for Visual FoxPro.
В диалоговом окне Data Link Properties появится закладка Connection.
Для ввода базы данных или таблицы Visual FoxPro
На закладке Connection впечатайте в боксе Select or enter a database name путь и имя желаемой базы данных или таблицы.
- или -
Для поиска папки базы данных или таблицы Visual FoxPro щелкните по командной кнопке поиска (...) справа от бокса ввода пути и имени файла для того, чтобы открыть диалоговое окно Configure Connection.
Укажите, если требуется, другую последовательность сопоставления (collating sequence).
Для проверки соединения, щелкните по Test Connection. Если соединение удалост установить, щелкните поOK.
Выбранная папка базы данных или таблицы появится в Visual Studio Server Explorer под узлом Data Connections.
Доступ к источникам данных Visual FoxPro с помощью строк соединения
Для доступа к источникам данных Visual FoxPro в программном коде, используйте допустимую строку соединения для указания Visual FoxPro OLE DB Provider, источника данных или имени источника данных. Например, вы можете обращаться к Visual FoxPro OLE DB Provider используя программный код Visual FoxPro.
Кроме того, вы можете вместо источника данных указать существующих Visual FoxPro ODBC Data Source Name (DSN). Provider использует источник данных, указанный в DSN и расширяет его в подходящую для Provider строку соединения.
Для соединения с Visual FoxPro OLE DB Provider в Visual FoxPro
Создайте объект ActiveX Data Object (ADO) Connection object aи создайте объект данных в Visual FoxPro.
Укажите Visual FoxPro OLE DB Provider и источник данных в строке соединения так, как это показано в приведенном ниже программном коде:
Скопировать код
oConn = CREATEOBJECT("ADODB.Connection") oConn.ConnectionString = "provider=vfpoledb.1;; data source=.\MyTestDatabase.dbc" oConn.Open
Этот код создает объет данных из которого вы можете извлекать данные.
![]() |
---|
Убедитесь, что заменили MyTestDatbase своим, подходящим именем базы данных. |
Вместо источника данных вы можете использовать в строке соединения существующий Open Database
Connectivity (ODBC) data source name (DSN) для Visual FoxPro OLE DB Provider. Visual FoxPro OLE DB Provider
принимает параметр, DSN = cDSNName
, и использует источник данных, указанный в DSN так,
как это показано в приведенном ниже примере:
![]() | |
---|---|
oConn=CREATEOBJECT("adodb.connection") oConn.ConnectionString="Provider=vfpoledb;DSN=ODBCdataSourceName" oConn.Open() |
![]() |
---|
Убедитесь, что заменили ODBCdataSourceName своим, подходящим
ODBC DSN, например, |
После того, как соединение будет открыто, вы можете запрашивать значение
ConnectionString
для определения оцениваемого источника данных.
Строка соединения включает в себя приведенные ниже ключевые слова-атрибуты и значения:
- Provider= cVFPOLEDBProvider
-
Указывает Visual FoxPro OLE DB Provider (VFPOLEDB).
- Data Source= cPath
-
Указывает путь к базе данных Visual FoxPro или папкуЮ содержащую свободные таблицы. Например, c:\Microsoft Visual FoxPro\Samples\Data\Testdata.dbc
- DSN= cDSNName
-
Указывает существующий ODBC DSN.
- Mode= cMode
-
Указывает одно из списка: Read, ReadWrite, Share Deny None (по умолчанию), Share Deny Read, Share Deny Write или Share Exclusive, которое включает два предыдущих режима.
Для полного объяснения синтаксиса строки соединения обратитесь к Microsoft OLE DB 2.5 Programmer's Reference and SDK Guide.
Обновление данных Visual FoxPro
Вы можете обновлять данные Visual FoxPro новыми значениями через Visual FoxPro OLE DB Provider с помощью ADO. Приведенная ниже процедура описывает три метода, с помощью которых вы можете производить обновление данных Visual FoxPro используя данные из базы данных Northwind, размещенной в каталоге Visual FoxPro ..\Samples\Northwind.
![]() |
---|
Убедитесь, что вы заменили имя NorthWind.dbc именем базы данных, которую вы желаете использовать. |
Для обновления данных Visual FoxPro через Visual FoxPro OLE DB Provider с помощью ADO
-
Вызовите команды обновления, вставки или удаления (update, insert или delete) непосредственно в коде.
Для прямого вызова команды обновления используйте метод ADO Execute. Например:
Скопировать код
CLEAR LOCAL oConn as "adodb.connection" LOCAL oRS as "adodb.recordset" oConn = CREATEOBJECT('adodb.connection') oRS = CREATEOBJECT('adodb.recordset') cConnStrng = ; "Provider=vfpoledb;Data Source="+HOME(2)+"Northwind\Northwind.dbc" oConn.Open(cConnStrng) oConn.BeginTrans() oConn.Execute("UPDATE Customers SET contactname = 'Patricio X. Simpson'; WHERE customerid='CACTU'") oRS = oConn.Execute("SELECT * FROM customers WHERE customerid = 'CACTU'") ?oRS.Fields("contactname").Value oConn.RollbackTrans() oRS.Requery() ?oRS.Fields('contactname').Value oRS.Close() oConn.Close()
- или -
-
Используйте курсор на клиенте.
Например:
Скопировать код
CLEAR LOCAL oConn as "adodb.connection" LOCAL oRS as "adodb.recordset" oConn = CREATEOBJECT('adodb.connection') oRS = CREATEOBJECT('adodb.recordset') cConnStrng = ; "Provider=vfpoledb;Data Source="+HOME(2)+"Northwind\Northwind.dbc" oConn.CursorLocation= 3 && adUseClient oConn.Open(cConnStrng) *!* Open RecordSet using keyset cursor and optimistic locking. oRS.Open(; "SELECT * FROM customers WHERE customerid = 'CACTU'",oConn,1,3,1) ? 'Current value:',oRS.Fields("contactname").Value oRS.Fields("contactname").Value = "Patricio X. Simpson" oRS.Update() oRS.Requery() ? 'New value:',oRS.Fields("contactname").Value oRS.Close() oConn.Close()
- или -
-
Используйте курсор на сервере.
Например:
Скопировать код
LOCAL oRS as "adodb.recordset" oConn = CREATEOBJECT('adodb.connection') oRS = CREATEOBJECT('adodb.recordset') cConnStrng = ; "Provider=vfpoledb;Data Source="+HOME(2)+"Northwind\Northwind.dbc" oConn.Open(cConnStrng) *!* Updatable server cursors must use the USE <table name> command to *!* open the table, not a SELECT statement. Server cursor is updatable, *!* opened keyset, and lock optimistic. oRS.Open("USE customers",oconn,1,3,1) ? 'CursorLocation:',IIF(oRS.CursorLocation=2,"adUseServer","adUseClient") * Find CACTU. ? oRS.Find("customerid='CACTU'") ? 'Current value:',oRS.Fields("contactname").Value oRS.Fields("contactname").Value = "Patricio Simpson" oRS.Update() oRS.Requery() oRS.Find("customerid='CACTU'") ? 'New value:',oRS.Fields("contactname").Value oRs.Close() oRS ='' oConn.Close()oConn=''
Доступ к данным Visual FoxPro Data из других языков
Вы можете обращаться к Visual FoxPro OLE DB Provider из других языков используя различные
строки соединения, зависящие от языка. Например,
для соединения с базой данных Visual FoxPro из приложения Visual C#,
вы можете использовать приведенную ниже строку соединения, заменив имя
myVFPDatabase
подходящим именем источника данных:
![]() | |
---|---|
oleDbConnection1.ConnectionString = "Provider=VFPOLEDB.1;" + "Data Source=C:\\myVFPDatabase.DBC;"; |
Приведенные ниже программный код иллюстрирует использование строк соединения, которые указывают Visual FoxPro OLE DB Provider и источник данных из других языков.
![]() |
---|
Убедитесь, что заменили myVFPDatabase подходящим источником данных или DSN. |
Для обращения к данным Visual FoxPro в Visual C#
-
Используйте строку соединения для указания Visual FoxPro OLE DB Provider и обращайтесь к источнику данных так, как показано в приведенном ниже программном коде:
Скопировать код
OleDbConnection oleDbConnection1 = new OleDbConnection("Provider=VFPOLEDB.1;" + "Data Source=C:\\myVFPDatabase.DBC;"); oleDbConnection1.Open();
Для доступа к данным Visual FoxPro из Visual Basic
-
Используйте строку соединения для указания Visual FoxPro OLE DB Provider и источника данных так, как это показано в приведенном ниже коде, где
oConnection
представляет собой объект ADO Connection:Скопировать код
oConnection.Open("Provider=vfpoledb.1; Data Source=.\myVFPDatabase.dbc")
Для доступа к данным Visual FoxPro с помощью ActiveX Data Objects (ADO) в Visual Basic
-
Используйте строку соединения для указания Visual FoxPro OLE DB Provider и источника данных так, как это показано в приведенном ниже коде:
Скопировать код
Imports System.Data.OleDb Public Class ConnectToVFP Public Function ADONETOpenVFPDatabase() As Boolean Dim bIsConnected As Boolean = True Try Dim cnn As New OleDbConnection("Provider=VFPOLEDB.1;" + _ "Data Source=.\MyTestDatabase.dbc;") cnn.Open() Catch e As System.Exception bIsConnected = False End Try Return bIsConnected End Function End Class
Замечание
Убедитесь, что заменили MyTestDatabase именем своей базы данных или каталога таблицы, доступ к которым вы желаете получить.
Для доступа к источнику данных Visual FoxPro из Visual C++
-
Установите свойства базы данных указанием массива
DBSetProp
, массиваDBProp
и указателяIDBProperties
, следующими за строкой соединения, которая указывает Visual FoxPro OLE DB Provider так, как показано в приведенном ниже программном коде:Скопировать код
HRESULT hr; CLSID clsid; // Set the DBProp array. DBPROP iProp[1]; DBPROPSET rgIP; IDBProperties* pIDBProperties = NULL; IDBInitialize *pIDBInitialize = NULL; VariantInit(&iProp[0].vValue); iProp[0].dwOptions = DBPROPOPTIONS_OPTIONAL; // Required iProp[0].colid = DB_NULLID; // Set the location of data source. iProp[0].dwPropertyID = DBPROP_INIT_DATASOURCE; iProp[0].vValue.vt = VT_BSTR; iProp[0].vValue.bstrVal = L"c:\myVFPDatabase.dbc"; // Data source // Set DBpropset to point to the DBPROP array. rgIP.guidPropertySet = DBPROPSET_DBINIT; rgIP.cProperties = 1; rgIP.rgProperties = iProp; ::CoInitialize(NULL); hr = CLSIDFromProgID(L"vfpoledb.1",&clsid); // Specify OLE DB Provider. hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IDBInitialize, (void**)&pIDBInitialize); // Initialize. hr = piDBInitialize->QueryInterface(_uuidof(IDBProperties), (void**)&pIDBProperties); hr = pIDBProperties->SetProperties(1 , &rgIP) ; hr = pIDBProperties->Release(); hr = pIDBInitialize->Initialize();
Для доступа к источнику данных Visual FoxPro в ASP с помощью ActiveX Data Objects (ADO)
-
Создайте страницу ASP с соответствующими тэгами HTML.
-
Для установки соединения и запуска команд с использованием ADO, добавьте код Visual Basic Scripting Language (VBScript):
Скопировать код
<% Set conn = Server.CreateObject("ADODB.Connection") conn.ConnectionString="Provider=VFPOLEDB.1; Data Source=myVFPDatabase.dbc" conn.Open sql = "select * from tableName" Set rsArrival = conn.Execute(sql) %>
Замечание
Убедитесь, что заменили tableName именем своей таблицы, которую вы желаете использовать.
Для доступа к источнику данных Visual FoxPro в JScript
-
Используйте строку соединения, для указания Visual FoxPro OLE DB Provider и источника данных так, как это показано в приведенном ниже программном коде:
Скопировать код
var vbOKCancel = 0; var vbInformation = 64; var vbCancel = 2; var L_Welcome_MsgBox_Message_Text = "This script demonstrates how to access VFP OLE DB Provider using the Windows Scripting Host."; var L_Welcome_MsgBox_Title_Text = "VFP OLE DB Provider JScript Sample"; var sBuffer = ""; var sConnString = "Provider=vfpoledb.1;Data Source=myVFPDatabase.dbc"; var oConn = new ActiveXObject("ADODB.Connection"); var oRS = new ActiveXObject("ADODB.Recordset"); oConn.Open(sConnString); oRS.Open("select * from tableName where fieldName1='fieldValue'",oConn,3,3); // Get tableName.fieldName2 sBuffer = oRS.Fields('fieldName2').value; var WSHShell = WScript.CreateObject("WScript.Shell"); var intDoIt; intDoIt = WSHShell.Popup(sBuffer, 0, L_Welcome_MsgBox_Title_Text, vbOKCancel ); if (intDoIt == vbOKCancel) { oRS.Close(); oConn.Close(); WScript.Quit(); }
Замечание
Убедить, что заменили myVFPDatabase, tableName, fieldName1, fieldName2 и fieldValue своими, соответствующими значениями. Вы должны использовать обратный слэш (\) для указания символов в пути к файлу, например: "c:\\MyFolder\\MyVFP.dbc".