Eski bir Jet veritabanı dosyası daha yeni bir Jet 4.0 biçim veritabanına kopyalamak üzere ADOX C++'ndan nasıl kullanılır

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:321328
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Özet
Bu makalede, ActiveX Veri Nesneleri Uzantıları için veri tanımlama dili ve güvenlik (ADOX) Visual C++ ile biçimlendirilmiş eski Jet veritabanındaki verileri kullanarak yeni bir Jet veritabanı oluşturmak için nasıl kullanılacağı gösterilmektedir. Bu makalede, Visual C++ ile ADOX kullanılan aşağıdaki teknikler de gösterilmektedir:
  • Jet veritabanı oluşturmak için Visual C++ ile ADOX kullanma
  • Veritabanındaki Tablo listesini nasıl elde edilir
  • Bir tablonun sütunlarını ve türleri de dahil olmak üzere meta verileri nasıl elde edilir
  • Tablolar ve sütunlar oluşturmak için ADOX Append yöntemini nasıl kullanılır
  • Bağlı bir tablo oluşturmak için Jet OLE DB sağlayıcıya özgü özellikleri nasıl kullanılır
  • ADO ADOX birlikte başka bir veritabanından veri kopyalamak için nasıl kullanılır
  • Nasıl yapılır: bir Jet veritabanından tablo silme
Daha fazla bilgi
Kaynak tablo Access 2.0 veya Access 95 biçiminde CompactDatabase yöntemi Jet Replication nesnesi (JRO) sınama yöntemi değil efectively algılamadığı reveals tablo Jet 4.0 biçimine dönüştürün. Access 95 veya Access 2.0 tarafından oluşturulan bir tablo JRO nesne CompactDatabase yöntemini kullanarak Jet 4.0 biçimine dönüştürüldüğünde, Access 2000 veya Access 2002 başarıyla veritabanı açılamıyor. Bu sorun, hala araştırma Microsoft'ta altındadır. JRO nesne yalnızca Jet 4.0 ile Jet 3.5 biçimi veritabanlarının çalışması için amaçlanmış unutmayın.

Eski Jet veritabanı (önceden Jet 3.5 biçiminden) dönüştürmek için ADOX 4.0 biçiminde yeni bir veritabanı oluşturun ve tüm tabloları kopyalamak için kullanın. Aşağıdaki kod, bunun nasıl yapılacağını gösterir. Bu işlem, basit bir örnektir ve birincil anahtarlar, <a1>Dizin</a1>, özellikleri ve ilişkileri gibi çeşitli özel senaryolar gidermez. Örnek, tablolar yalnızca kopyalar ve diğer nesneleri kaynak veritabanından kopyalayın. Bu teknikler hakkında ek bilgi için MSDN Library Web sitesinde ADOX belgelerine bakın.

Aşağıdaki kodu bir C++ projede kaydetmek ve sonra projeyi oluşturun:

Not: alma ve bağlantı dizeleri yollarında kodunu dışında bir şey değiştirmek gerekmez.
#import "c:\Program Files\Common Files\system\ado\msado15.dll" #import "c:\Program Files\Common Files\system\ado\msadox.dll"#include <iostream>using namespace std;void main(){	   CoInitialize(NULL);	   //ADO Connection Object pointers for source and destination.   ADODB::_ConnectionPtr SourceCon = NULL;   ADODB::_ConnectionPtr DestCon = NULL;   //ADOX Catalog object pointers for source and destination.   ADOX::_CatalogPtr DestDB = NULL;   ADOX::_CatalogPtr SourceDB = NULL;	   //Connection string.    _bstr_t SrcConnectionString(L""), DestConnectionString(L""), SourceDBLocation(L"");   ADOX::_TablePtr linkedTbl = NULL;   ADOX::_ColumnPtr f = NULL;   ADOX::_TablePtr DestTable = NULL;   try{         SourceDBLocation = (L"C:\\JET30FormatDB.mdb");         //Per Q299484, you must use ODBC Provider to avoid alphabetical ordering.         SrcConnectionString = "Driver={Microsoft Access Driver (*.mdb)};"			"DBQ=" + SourceDBLocation;          DestConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"			  "Data Source=C:\\JET40FormatDB.mdb;"	;         SourceCon.CreateInstance(__uuidof(ADODB::Connection));         SourceCon->Open(SrcConnectionString,"","",-1);         SourceDB.CreateInstance(__uuidof (ADOX::Catalog));         //ADOX catalog must have an active ADO connection          SourceDB->PutActiveConnection(_variant_t((IDispatch *) SourceCon));		         DestDB.CreateInstance(__uuidof (ADOX::Catalog));		         //This line creates a Jet database, and throws an exception if it already exists.         DestDB->Create(DestConnectionString);         DestCon.CreateInstance(__uuidof(ADODB::Connection));         DestCon->Open(DestConnectionString,"","",-1);         DestDB->PutActiveConnection(_variant_t((IDispatch *) DestCon));         //Get the count of tables in Source Database.         long x = SourceDB->Tables->Count;         for (int i = 0; i < x ; i++)         {            // Go through each table that is listed as TABLE and not SYSTEM TABLE or ACCESS SYSTEM TABLE.            if (SourceDB->Tables->Item[(long)i]->Type == _bstr_t(L"TABLE"))            {               cout<<"Now copying "<< (LPCSTR)SourceDB->Tables->Item[(long)i]->Name<<endl;               _bstr_t tblName = SourceDB->Tables->Item[(long)i]->Name;               //Start creating a table.               DestTable.CreateInstance(__uuidof(ADOX::Table));               DestTable->Name = tblName;               //Get number of columns in Source Table.                int cnt = SourceDB->Tables->Item[tblName]->Columns->Count;				               //Use ADOX Append method to append all columns to the destination table.                for ( int col = 0; col < cnt; col++)               {                  f = SourceDB->Tables->Item[tblName]->Columns->Item[(long)col];                 DestTable->Columns->Append(f->Name,f->Type,f->DefinedSize);               }					               //Finally, append destination table.               DestDB->Tables->Append( DestTable.GetInterfacePtr());               //This step is to get the data from source table.                //Create a temporary linked table in Destination Database               //and run "Insert Into mynewTable Select * from LinkedTable".               linkedTbl.CreateInstance(__uuidof(ADOX::Table));               linkedTbl->ParentCatalog = DestDB;               linkedTbl->Name = "TempLink2";               linkedTbl->Properties->Item["Jet OLEDB:Create Link"]->Value = (long)true;               linkedTbl->Properties->Item["Jet OLEDB:Link Datasource"]->Value = SourceDBLocation;                     linkedTbl->Properties->Item["Jet OLEDB:Remote Table Name"]->Value = tblName;				DestDB->Tables->Append(linkedTbl.GetInterfacePtr());               DestCon->Execute("Insert into " + tblName + " Select * From TempLink2", NULL, -1);               //You do not have to keep this linked table around, so you can delete it.                DestDB->Tables->Delete("TempLink2");               DestTable.Release();               linkedTbl.Release();            }            else            {               cout <<"Skipping "<< (LPCSTR)SourceDB->Tables->Item[(long)i]->Name <<endl;            }			        } // End of for loop.				        DestCon->Close();        SourceCon->Close();       }       catch(_com_error &e)       {         _bstr_t bstrSource(e.Source());         _bstr_t bstrDescription(e.Description());         cout<< "Source: "<< (LPCSTR)bstrSource <<"\nDescription : " << (LPCSTR)bstrDescription <<endl;       }}				
Referanslar
Daha fazla bilgi için MSDN Kitaplığı aşağıdaki Microsoft Web sitesini ziyaret edin: MSDN Kitaplığı'nın sol bölmedeki içindekiler ağacında aşağıdaki Yardım konusuna gidin:
  \Data Access    \Microsoft Data Access Components      \ADO        \SDK Documentation          \Microsoft ActiveX Data Objects (ADO)            \ADO Programmer's Guide				
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
225048BILGI: ADO/Jet DAO/Jet ' yükseltme sorunları
304322ACC2002: İçin alma ilişkiler ADOX nasıl
230588ADOX kullanarak, Jet tablolar bağlantı ve yenileme işlemlerinin nasıl bağlı
279245Düzeltme: Varsayılan sütun özelliklerini ayarlama veya bir Access veritabanı için ADOX kullanarak değerleri denetleyin temizleniyor
304323ACC2002: Nasıl ADOX bir SQL doğrudan sorgusu oluşturmak için kullanılır
275252ACC2000: nasıl aracılığıyla ADOX'u Jet veri türleri içeren bir tablo oluştur
252908ADOX kullanarak birincil anahtar içeren bir tablo oluşturma
230501Nasıl yapılır: ADO üzerinden bir Microsoft Access veritabanı Sıkıştır
ADOX, dönüştürülen Jet dönüştürme nasıl YAPıLıR JET40 4.0 özellikleri VC ++ VC C++ oluştur...

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 321328 - Son İnceleme: 02/26/2014 23:24:21 - Düzeltme: 1.4

Microsoft Visual Studio 6.0 Enterprise Edition, Microsoft ActiveX Data Objects 2.7

  • kbnosurvey kbarchive kbmt kbfile kbhowto KB321328 KbMttr
Geri bildirim