Очень хороший OCX файл который позволяет нам добраться до данных по технологии ADO. Сам он находиться в файле MSADODC.OCX. Познакомиться с ним можно в шагах "Шаг 34 - Используем ADO" и дальше. Мы с Вами подключаем его к нашему проекту. Я создал MFC AppWizard проект на базе диалогового окна и именем ADOTest. Ну и подключил его как всегда.
Он создаст классы. Все созданные классы да и сам элемент будут в проекте, на тот случай если Вам не захочется их создавать.
Нашей задачей будет используя этот элемент установить связь с источником данных и получить от туда данные. Подключаем описание:
/////////////////////// // CADOTestDlg dialog #include "adodc.h" class CADOTestDlg : public CDialog { // Construction
Создаем объект класса.
class CADOTestDlg : public CDialog { // Construction public: CADOTestDlg(CWnd* pParent = NULL); // standard constructor CAdodc ca; // Dialog Data //{{AFX_DATA(CADOTestDlg)
Нам нужно его создать и спрятать с глаз.
BOOL CADOTestDlg::OnInitDialog() { CDialog::OnInitDialog(); ca.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, 111); ca.ShowWindow(SW_HIDE); // Add "About..." menu item to system menu.
Теперь нужно произвести инициализацию строку соединений, запрос на строки.
ca.SetConnectionString("PROVIDER=MSDASQL.1;dsn=Auto;uid=sa;pwd=123;database=auto;"); ca.SetRecordSource("SELECT * FROM car"); ca.Refresh();
Указав строку соединения и запрос на данные мы можем создать обьект набора строк. Включаем описание
//////////////////////// // CADOTestDlg dialog #include "adodc.h" #include "_recordset.h"
Сначала мы его просто создадим.
class CADOTestDlg : public CDialog { // Construction public: CADOTestDlg(CWnd* pParent = NULL); // standard constructor CAdodc ca; C_Recordset cr; // Dialog Data
Потом получим данные из ADODC
BOOL CADOTestDlg::OnInitDialog() { CDialog::OnInitDialog(); ca.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, 111); ca.ShowWindow(SW_HIDE); ca.SetConnectionString("PROVIDER=MSDASQL.1;dsn=Auto;uid=sa;pwd=123;database=auto;"); ca.SetRecordSource("SELECT * FROM car"); ca.Refresh(); cr=ca.GetRecordset(); long i=cr.GetRecordCount(); char buffer[255]; itoa(i,(char*)&buffer,10); AfxMessageBox(buffer);
В результате мы увидим диалоговое окно в котором будет количество записей.
Их правда пять и находятся они на SQL Server если посмотрели строку соединения. Auto это настроенный DSN для ODBC.