PDA

View Full Version : ارتباط c++ با پایگاه داه sql



s66bahramian
دوشنبه 15 شهریور 1389, 16:43 عصر
سلام
می خواهم یک پروژه دیکشنری با c++ بنویسم و 1000 تا کلمه در پایگاه داده وارد کنم.

غیر از روش اتصال VC++ با پایگاه داده ایا مثلا می شه توربو داس را در ویندوز xp به پایگاه داده وصل کرد؟؟؟؟؟؟؟

سوال دیگه اینکه -----------------------

باید با استفاده از odbc به پایگاه داده خود ویژوال استادیو 2010 (SQL )وصل شم. نمونه دستورات را می دونم چجوری باید بنویسم . refrence دستوراتش رو هم پیدا کردم.

منتها تنظیمات اولیه اش رو که بتونم دستورات رو کامپایل کنم . نتونستم انجام بدهم.
من از ویژوال استادیو یک empty proje ساختم.
و در آن یک آیتم جدید sql script file ساختم و در فایل باز شده کلیک راست کردم و به پایگاه داده کانکت شدم(اینجا فقط یک انتخاب داشتم و مسیری در کارنبود!):
و دستورات sql را برای ساختن یک پایگاه داده نوشتم.

بعد دوباره به پروژه خودم یک آیتم جدید : .cpp اضافه کردم، برای اینکه دستورات را توش بنویسم. از نوار منوی بالا ، قسمت Tools کانکت به دیتابیس را انتخاب کردم
در قسمت data connection : ادد کانکشن را زدم و دیتا سورس اون رو Microsoft ODBC Data Source گذاشتم
http://img4u.net/images/rrf2yt2qp19r57o0wi.jpg
و نمونه دستورات ODBC هم به شکل زیر است :

مثلا یک نمونه از دستورات به شکل زیر است:

// SQLConnect_ref.cpp
// compile with: odbc32.lib
#include <windows.h>
#include <sqlext.h>

int main() {
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;

SQLCHAR * OutConnStr = (SQLCHAR * )malloc(255);
SQLSMALLINT * OutConnStrLen = (SQLSMALLINT *)malloc(255);

// Allocate environment handle
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

// Set the ODBC version environment attribute
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

// Allocate connection handle
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

// Set login timeout to 5 seconds
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);

// Connect to data source
retcode = SQLConnect(hdbc, (SQLCHAR*) "NorthWind", SQL_NTS, (SQLCHAR*) NULL, 0, NULL, 0);

// Allocate statement handle
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

// Process data
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}

SQLDisconnect(hdbc);
}

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
}
}
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
}



وقتی اجراش میکنیم تمام کتابخابخانه های که تو مسیر c:\window\sistem 32 هس ر خطا می گیره ..دسترسی بهشون نداره!
ODBC هم ورژخ 3.52 هست.
'access data.exe': Loaded 'C:\Documents and Settings\Mohsen\My Documents\Visual Studio 2010\Projects\access data\Debug\access data.exe', Symbols loaded.
'access data.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\odbc32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\secur32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\comctl32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\user32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\comdlg32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\shell32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\shlwapi.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\msvcr100d.dll', Symbols loaded.
'access data.exe': Loaded 'C:\WINDOWS\system32\lpk.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\usp10.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll', Cannot find or open the PDB file
'access data.exe': Loaded 'C:\WINDOWS\system32\odbcint.dll', Binary was not built with debug information.
The program '[420] access data.exe: Native' has exited with code 0 (0x0).

لطفا راهنماییم کنید چجوری c++ را به طور صحیح به پایگاه داده وصل کنم.خیلی فوری هست .مرسی مرسی.:عصبانی++:
از چه هدر فایل هایی باید استفاده کنیم .

iranpcl
سه شنبه 03 خرداد 1390, 19:54 عصر
سلام
من هم این مشکل رو دارم و نمیتونم به هیچ وجه با c++ به پایگاه داده ای وصل شم
لطفا راهنمایی بفرمایید
متشکر

parsdc
شنبه 22 بهمن 1390, 21:14 عصر
راحل استفاده از dll های قدیمی تحت عنوان dll های کام است
من یه dll کام ساختم که مثل آب خوردن با sql ارتباط برقرار میکنه
اگه dll کام کارت را را میندازه با ایمیلم تماس بگیر تا برات بفرستم چون به این سایت سر نمیزنم میگم با ایمیلم تماس بگیر
یه dll دیگه هم ساختم که اون هم کام هست برای زبانهایی که دات نیت نیستند میتونند استفاده کنند و اون تاریخ شمسی را به میلادی و میلادی را به شمسی تبدیل میکنه
ali_ghasemian@ymail.com

pe32_64
شنبه 22 بهمن 1390, 21:35 عصر
یک سر به اینجا (http://barnamenevis.org/showthread.php?325915-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B2-SQL-Server-%D8%AF%D8%B1-MFC-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%D9%85%D8%9F) بزنید