Форум программистов, компьютерный форум CyberForum.ru

Параметризированный запрос и ADO control - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
marmoi72
Сообщений: n/a
11.10.2007, 12:49     Параметризированный запрос и ADO control #1
Работаю с Datagrid Control

-Объявляю гибкий указатель ebRecS.CreateInstance(__uuidof(Recordset));

- подсоединяюсь к БД test.mdb c таблицей table1

-открываю таблицу

C++
1
2
3
4
5
6
ebRecS->Open('select * from table1 where table1.t_ID=1',  // SQL команда вывода
                //всех      записей БД 
 'DSN=test;UID=;PWD=;',  //ODBC источник данных 
                               adOpenStatic, 
                               adLockOptimistic, 
                               adCmdText);
Все работает. Выбираются строки с t_ID=1.

Но как создать параметризированный запрос для выбора строк с t_ID=x?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2007, 12:49     Параметризированный запрос и ADO control
Посмотрите здесь:

C++ Люди помогите с Tree View Control
Очистка поля Edit control C++
Создать параметризированный класс Matrix C++
C++ ADO Data Grid Control
Как расположить control в гл. окне C++
Как зарегистрировать OLE Control через regsvr32? C++
C++ Надо создать ActiveX control (+)
C++ Внедрение элементов управления в ActiveX control
C++ Как вывести enter в Edit Control
Picture Control jpg из файла C++
C++ Создать параметризированный класс Stack
Поддержка ADO C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chuck
Сообщений: n/a
11.10.2007, 15:36     Параметризированный запрос и ADO control #2
А что, нельзя создать строковую переменную, типа
CString str1;
CString str2 = 'select * from table1 where table1.t_ID = ' + str1;
и подставить str2 как первый параметр в Open?
Виталий
marmoi72
Сообщений: n/a
11.10.2007, 15:58     Параметризированный запрос и ADO control #3
А пример подстановки str2 в Open у вас есть?
У меня в этом случае возникает проблема с типами.
Возможно, это результат того, что это мой первый проект, и я где-то делаю глупую ошибку...
Chuck
Сообщений: n/a
11.10.2007, 17:15     Параметризированный запрос и ADO control #4
Вот пример параметризованного запроса в MSDN
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#import 'C:Program FilesCommon FilesSystemadomsado15.dll' 
           rename( 'EOF', 'adoEOF' )
   ...
   _variant_t  vtEmpty (DISP_E_PARAMNOTFOUND, VT_ERROR);
   _variant_t  vtEmpty2(DISP_E_PARAMNOTFOUND, VT_ERROR);
   ...
   ADODB::_ConnectionPtr  Conn1;
   ADODB::_CommandPtr     Cmd1;
   ADODB::_ParameterPtr   Param1;
   ADODB::_RecordsetPtr   Rs1;
 
   // Trap any error/exception.
   try
   {
       // Create and Open Connection Object.
       Conn1.CreateInstance( __uuidof( ADODB::Connection ) );
       Conn1->ConnectionString =
                           _bstr_t(L'DSN=Biblio;UID=adimin;PWD=;');
       Conn1->Open( _bstr_t(L''), _bstr_t(L''), _bstr_t(L''), -1 );
 
       // Create Command Object.
       Cmd1.CreateInstance( __uuidof( ADODB::Command ) );
       Cmd1->ActiveConnection = Conn1;
       Cmd1->CommandText = _bstr_t(L'SELECT * FROM Authors '
                                   L'WHERE Au_ID < ?');
 
       // Create Parameter Object.
       Param1 = Cmd1->CreateParameter( _bstr_t(L''),
                                       ADODB::adInteger,
                                       ADODB::adParamInput,
                                       -1,
                                       _variant_t( (long) 5) );
       Param1->Value = _variant_t( (long) 5 );
       Cmd1->Parameters->Append( Param1 );
 
       // Open Recordset Object.
       Rs1 = Cmd1->Execute( &vtEmpty, &vtEmpty2, ADODB::adCmdText );
 
   }
 
   catch( CException *e ) { e->Delete(); }
   catch(...)             {  }
С уважением,
Виталий
Yandex
Объявления
11.10.2007, 17:15     Параметризированный запрос и ADO control
Ответ Создать тему
Опции темы

Текущее время: 05:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru