PDA

View Full Version : win32پایگاه داده



meysamg_alone
شنبه 26 بهمن 1387, 16:44 عصر
با سلام
من یه تازه کار هستم می خواستم برنامه نویسی ویژوال سی ++ win32 رو یاد بگیرم .
می خواستم اول بدونم ارتباط با پایگاه داده تویه ویژوال سی win32 به چه شکل هست
اگه امکان داره یه سورس ساده بزارین ممنون میشم

mehdi.mousavi
شنبه 26 بهمن 1387, 17:14 عصر
با سلام
من یه تازه کار هستم می خواستم برنامه نویسی ویژوال سی ++ win32 رو یاد بگیرم. می خواستم اول بدونم ارتباط با پایگاه داده تویه ویژوال سی win32 به چه شکل هست اگه امکان داره یه سورس ساده بزارین ممنون میشم

سلام.
شما انبوهی از انتخابها دارید:



استفاده از ODBC APIs (http://www.easysoft.com/developer/languages/c/odbc_tutorial.html)
استفاده از ADO (http://www.codeguru.com/cpp/data/mfc_database/ado/article.php/c6729)
استفاده از OLEDB (http://msdn.microsoft.com/en-us/library/ms713643%28VS.85%29.aspx)
و چیزهای دیگه...

اما اگر هنوز به Win32 مسلط نیستید، پیشنهاد میکنم ابتدا در مورد Win32 مطالعه کنید و از خوندن دو روش ADO و OLEDB در حال حاضر پرهیز کنید. دو روش اخیر نیاز به دانش COM دارن و اون خودش به تنهایی دنیایی از اطلاعاته...

حسین محمدی
یک شنبه 27 بهمن 1387, 12:08 عصر
به لینک زیر یک سر بزنید.
http://msdn.microsoft.com/en-us/library/ms810892.aspx
واقعا اطلاعات جالبی را در این مورد ارائه داده.

البته می توانید از کلاسهای MFC و ATL در این مورد استفاده کنید که کار را برای شما راحتتر کرده است.

Cave_Man
چهارشنبه 30 بهمن 1387, 19:52 عصر
لطفا یه نمونه مثال بزنید که بدون استفاده از ODBC یا OLE یا ADO با دیتابیس ارتباط داشته باشیم یعنی با استفاده از امکاناتی که دیتابیس در اختیار برنامه نویس میزاره تا مستقیما و بدون این واسطه ها باهاش بشه تراکنش و ارتباط داشت.این امکاناتی که دیتابیس در اختیار برنامه نویس میزاره چی هست و چطور میشه اونها رو یاد گرفت..یه نمونه دیتابیس که اینگونه عمل میکنه رو میخام نام ببرید.

حسین محمدی
دوشنبه 12 اسفند 1387, 07:43 صبح
شما برای ارتباط با دیتابیس ناچار به استفاده از یکی از موارد ODBC یا OLE DB یا ADO می باشید و بدون استفاده از این موارد نمی توانید مستقیما به دیتابیس متصل شوید.

ساده ترین راه در ++Visual C آن است که از منوی Project > Add Class و سپس ATL OLEDB Consumer را انتخاب نمایید.

یک پنجره برای شما ظاهر می شود.

بر روی Data Source کلیک کرده و دیتابیس مورد نظر و جدول یا ... را انتخاب نمایید و در نهایت با فشردن دکمه OK به دیالوگ اولی برمی گردید.

در قسمت Attributed تیک را برداشته و سپس OK را فشار دهید.

خواهید دید که یک هدر فایل محتوی دو کلاس برای شما فراهم آورده است.

البته احتمالا یک اخطار را نیز در صورتی که پسورد برای اتصال به دیتابیس استفاده کرده اید دریافت خواهید کرد. و یک sequrity issue برای شما در هدر فایل به همین منظور قرار داده است. (آنرا comment کنید)

این ویزارد یک نمونه کد ساخته شده را برای شما فراهم خواهد آورد تا به عنوان یک تجربه آن را ببینید.

برای بهینه کردن کار مجبورید کد بنویسید و تغییرات لازم را در ویزاد بالا بدهید.

برای مثال یک نمونه کد برای اتصال به دیتابیس نوشته ام در زیر قرار می دهم.
این قطعه کد از یک فایل UDL اطلاعات لازم جهت اتصال به دیتابیس (Microsoft OLEDB Provider for SQL Server) را لود کرده و دو مرتبه آنرا ذخیره می نماید و بعد می توان یک ConnectionString را از این فایل استخراج کرد.



HRESULT OpenDataLinkPropertiesDialogFromUDLFile(LPCOLESTR szFileName, HWND hWnd, DBPROMPTOPTIONS dwPromptOptions) throw()
{
CComPtr<IDataInitialize> spDataInit;
CComHeapPtr<OLECHAR> spszInitString;
HRESULT hr = CoCreateInstance(__uuidof(MSDAINITIALIZE), NULL, CLSCTX_INPROC_SERVER,
__uuidof(IDataInitialize), (void**)&spDataInit);
if (FAILED(hr))
return hr;
hr = spDataInit->LoadStringFromStorage(szFileName, &spszInitString);
if (FAILED(hr))
return hr;
CComPtr<IDBInitialize> spInit;
hr = spDataInit->GetDataSource(NULL, CLSCTX_INPROC_SERVER, spszInitString/*szInitializationString*/,
__uuidof(IDBInitialize), (IUnknown**)&spInit);
if (FAILED(hr))
return hr;
CComPtr<IDBPromptInitialize> spDBInit;
hr = CoCreateInstance(__uuidof(DataLinks), NULL, CLSCTX_INPROC_SERVER,
__uuidof(IDBPromptInitialize), (void**) &spDBInit);
if (FAILED(hr))
return hr;
CComPtr<IDBProperties> spProperties;
hr = spInit->QueryInterface(__uuidof(IDBProperties), (void**)&spProperties);
if (FAILED(hr))
return hr;
IDBProperties *pIDBProperties = spProperties;
hr = spDBInit->PromptDataSource(NULL, hWnd, dwPromptOptions, 0, NULL, NULL,
__uuidof(IDBProperties), (IUnknown**)&pIDBProperties);
if (hr == S_OK)
{
LPOLESTR pszInitString = spszInitString;
hr = spDataInit->GetInitializationString((IUnknown *)spProperties, false, &pszInitString);
hr = spDataInit->WriteStringToStorage(szFileName, pszInitString, CREATE_ALWAYS);
}
return hr;
}

mabbaszadegan
چهارشنبه 05 فروردین 1388, 03:05 صبح
سلام ، به وبلاگ من یه سر بزن ، تازه شروع کردم ، ولی امیدوارم بتونه کمکی بت بکنه
http://mabbaszadegan.mihanblog.com