كيفية استخدام ADOX من C++ إلى نسخ ملف قاعدة بيانات Jet قديمة إلى قاعدة بيانات تنسيق Jet 4.0 أحدث

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

321328
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
توضح هذه المقالة كيفية استخدام ملحقات كائنات بيانات ActiveX للغة تعريف البيانات و الأمان (ADOX) مع Visual C++ لإنشاء قاعدة بيانات Jet جديدة باستخدام بيانات من قاعدة بيانات Jet منسقة قديمة. يوضح هذا المقال أيضاً الأساليب التالية التي يتم استخدامها في ADOX مع Visual C++:
  • كيفية استخدام ADOX مع Visual C++ إلى إنشاء قاعدة بيانات Jet
  • كيفية الحصول على قائمة الجداول في قاعدة بيانات
  • كيفية الحصول على بيانات التعريف لجدول بما في ذلك الأعمدة أنواع
  • كيفية استخدام أسلوب إلحاق ADOX لإنشاء الجداول والأعمدة
  • كيفية استخدام الخصائص المتعلقة موفر Jet OLE DB إلى إنشاء جدول مرتبط
  • كيفية استخدام ADO في تركيبة مع ADOX نسخ البيانات من قاعدة بيانات واحد إلى آخر
  • كيفية حذف جدول من قاعدة بيانات Jet
معلومات أخرى
اختبار الأسلوب CompactDatabase كائن النسخ المتماثل Jet (JRO) reveals أن يقوم الأسلوب لا efectively تحويل جدول إلى تنسيق Jet 4.0 إذا كان الجدول المصدر في Access 2.0 أو في تنسيق Access 95. إذا كان يتم تحويل جدول الذي تم إنشاؤه بواسطة Access 2.0 أو Access 95 إلى تنسيق Jet 4.0 باستخدام الأسلوب CompactDatabase للكائن JRO ، Access 2000 أو Access 2002 يتعذر بنجاح فتح قاعدة البيانات. هذه المشكلة ما زال ضمن الاستقصاء في Microsoft. لاحظ أن الكائنات JRO تم تقصد تعمل فقط مع Jet 4.0 و Jet 3.5 x تنسيق قواعد البيانات.

تحويل قاعدة بيانات Jet القديم (أقدم من تنسيق Jet 3.5) ، استخدم ADOX إنشاء قاعدة بيانات جديدة تنسيق 4.0 ونسخ كافة الجداول. توضح التعليمة البرمجية التالية كيفية القيام بذلك. هذا هو نموذج بسيط كما لم عنوان العديد من السيناريوهات الخاصة مثل المفاتيح الأساسية فهارس وخصائص علاقات. نسخ النموذج فقط الجداول و لا ينسخ كائنات أخرى من قاعدة البيانات المصدر. للحصول على معلومات إضافية حول هذه التقنيات راجع وثائق ADOX على موقع "مكتبة MSDN".

حفظ التعليمات البرمجية التالية في مشروع C++ كما ثم إنشاء المشروع:

ملاحظة: لا يوجد لديك تغيير أي شيء في التعليمات البرمجية عدا المسارات على سلاسل #import واتصال.
#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;       }}				
مراجع
لمزيد من المعلومات، قم بزيارة مكتبة MSDN في موقع Microsoft التالي على الويب: في شجرة "المحتويات" في الجزء الأيمن من مكتبة MSDN استعرض للوصول إلى موضوع التعليمات التالي:
  \Data Access    \Microsoft Data Access Components      \ADO        \SDK Documentation          \Microsoft ActiveX Data Objects (ADO)            \ADO Programmer's Guide				
للحصول على معلومات إضافية، انقر فوق رقمي المقالتين التاليتين لعرضهما في "قاعدة المعارف لـ Microsoft:
225048INFO: المشاكل ترحيل من DAO/Jet إلى ADO/Jet
304322ACC2002: كيفية استخدام ADOX "علاقات استيراد"
230588كيفية ارتباط و تحديث جداول Jet استخدام ADOX المرتبطة
279245FIX: مسح خصائص العمود الافتراضي عند تعيين أو تفحص قيم باستخدام ADOX إلى قاعدة بيانات Access
304323ACC2002: كيفية استخدام ADOX لإنشاء استعلام SQL التمريري
275252ACC2000: كيفية إنشاء جدول مع أنواع بيانات Jet خلال ADOX
252908كيفية إنشاء جدول مع مفتاح أساسي عبر ADOX
230501كيفية ضغط قاعدة بيانات Microsoft Access بواسطة ADO
تحويل Jet ADOX تحويل إنشاء HOWTO JET40 4.0 خصائص VC ++ VC C++

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 321328 - آخر مراجعة: 02/28/2014 00:36:29 - المراجعة: 1.4

  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft ActiveX Data Objects 2.7
  • kbnosurvey kbarchive kbmt kbfile kbhowto KB321328 KbMtar
تعليقات