PDA

View Full Version : connecting database using oledb



حسین محمدی
پنج شنبه 27 دی 1386, 15:26 عصر
با سلام به همه دوستان.

در پروژه خود نیاز دارم که به یک دیتابیس که بر روی SQL ساخته ام وصل شوم و اطلاعات خود را بر روی دیتابیس ویرایش قرار دهم.

به این منظور از منوی Project و انتخاب Add Class و انتخاب ATL OLEDB Consumer یک کلاس به پروژه خود اضافه کنم. (البته با تنظیم دیالوگ ATL OLEDB Consumer Wizard)

با انجام مراحل فوق برنامه یک کلاس به پروژه اضافه کرده و یک Attribute که شامل Connection String و یک Command است در سر کلاس قرار داده است.

نکته اینجاست چنانچه من برنامه را کامپایل کرده و در سیستمی دیگر اجرا کنم با توجه به آنکه ممکن است محتوی Connection String نیاز به تغییر داشته باشد برنامه دیگر اجرا نخواهد شد . به همین جهت چنانچه لازم باشد کاربر باید بتواند Connection String را هنگام اجرای برنامه بسازد .

البته این کار (ساختن Connection String) توسط یک فایل با پسوند .udl امکان پذیر است .
برای ساختن Connection String یک فایل udl در مسیر پروژه ساخته و آنرا اجرا کردم. مراحل لازم برای وصل شدن به دیتابیس را انجام داده آنرا ذخیره کردم.

ولی با این حال هنوز نمی توانم در برنامه Connection String را با استفاده از IDBPromptInitialize interface از این فایل به دست آورم و در برنامه قرار دهم. لطفا بنده را راهنمایی کنید.

(در Visual Studio 2003 پروژه خود را ایجاد کردم.)

Nima_NF
پنج شنبه 27 دی 1386, 18:49 عصر
این لینک را ببینید شاید کمکی کند:
Connecting to the Database (http://msdn2.microsoft.com/en-us/library/ks1904dc%28vs.71%29.aspx)

حسین محمدی
یک شنبه 21 بهمن 1386, 16:33 عصر
با توجه به MSDN من کد خود را اینچنین نوشته ام:

HRESULT hr = S_OK;
IDataInitialize *pIDataInitialize = NULL;
hr = CoCreateInstance( CLSID_DataLinks, NULL, CLSCTX_INPROC_SERVER, IID_IDataInitialize, reinterpret_cast<void **>( &pIDataInitialize ));

و توضیحات MSDN درباره IDataInitialize به این شکل است :

Use the IDataInitialize interface to create a data source object using a connection string. You can also retrieve a connection string from an existing data source object.
To build a connection string, use the prompting user interface available through the IDBPromptInitialize interface and then use IDataInitialize to get a data source object based on that connection string.


من باید در نهایت توسط یک Connection String یک Object از یک Data Source ایجاد کنم.
ولی من هنوز نمی دانم IDataInitialize چه چیزی را برای من فراهم کرده است؟