Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C/C++ Работа с браузерами https://www.cyberforum.ru/ c-cpp/ thread2568045.html
Есть у меня программа бот, которая работает с IE, через его интерфейс IWebBrowser2 Вытаскивает html, ищет координаты объектов на странице и нажимает их. Ссылки, кнопки, комбобоксы и прочее... Но эта штука конечно работает только с IE. Появилась необходимость расширить это на другие основные браузеры Firefox, Chrome, Edge, Opera. В ходе поисков набрел на WebDriver. Удобная штука, но по...
C/C++ Inside OLE
Есть у кого книга в электронке Inside OLE / Inside OLE second?
C/C++ Excel и C++ Помогите пожалуйста. Хочу использовать в программах C++ данные из Excel. Прочитал про систему OLE, но ничего не понял... Объяснения везде запутанны. Не понимаю какие нужны библиотеки, какая среда программирования, какие функции и тд. Нужно всего лишь брать данные из ячейки записывать в переменную и записывать обратно. Помогите разобраться! Сайты, советы, книги - поможет все! Заранее спасибо https://www.cyberforum.ru/ c-cpp/ thread2530988.html C/C++ Петцольд OLE IMalloc https://www.cyberforum.ru/ c-cpp/ thread2527377.html
Пример из книги падает во время выполнения, компилятор пишет ересь. Падения происходит при попытке достучаться к любой услуге интерфейсов IUnknown или IMalloc. О том что компилятор болеет - четко видно на приложенном скрине. pDAlloc не может быть nullptr, если б не удалось выделать память new бросил бы std::bad_alloc. #ifndef IMALLOC_H #define IMALLOC_H #include <windows.h>
C/C++ Правильный путь к файлу
Народ такая проблема.. есть код: 1 axWindowsMediaPlayer1->URL ="D:\\Programm\\Game_for_Sonja\\Cartoons\\Cartoon_1.mp4"; 2 axWindowsMediaPlayer1->Ctlcontrols->play(); все работает, но я сделаю прогу установочной Installer то есть адрес видео D:\\Programm\\Game_for_Sonja\\Cartoons\\Cartoon_1.mp4 после установки поменяется
C/C++ Transpose SafeArray Всем привет. Набросал функцию для транспонирования SafeArray (двухмерный), с любым типом данных. Вопрос знатокам: можно ли сделать эффективно, не прибегая к низкому уровню, к примеру, через VType или каким либо еще, отличным от представленного, методом? Ранее пробовал через switch(VType )... case VT... - много кода. Через преобразования типа указателя, опять же адресная арифметика. Вообщем,... https://www.cyberforum.ru/ c-cpp/ thread2495662.html
C/C++ Как убрать script error сообщения в СОМ объекте Internet Explorer? (ATL) https://www.cyberforum.ru/ c-cpp/ thread2493365.html
Создаю компонент браузера на форме, вида AtlAxWinInit(); hBrowser = CreateWindowEx(WS_EX_STATICEDGE, "AtlAxWin", "https://yandex.ru", WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL , 0, 0, 0, 0, hWnd, (HMENU)IDC_BROWSER, GetModuleHandle(NULL), NULL);
C/C++ OLE для чайника
Добрый день! Нужна помощь с работой с данными Excel. Работаю в Visual Studio C++. Нужно забирать данные из файла Excel в программу, производить различные вычисления и записывать их обратно. В интернете нашел, что это можно осуществить при помощи технологии OLE, но нигде не нашел понятного и полного объяснения работы с этой технологией и где ее брать. Подскажите, где брать эту информацию, или же...
C/C++ Программно работать с recent file list в PowerPoint получить доступ к recent file list в PowerPoint. Нужна помощь https://www.cyberforum.ru/ c-cpp/ thread2482362.html C/C++ Для чего эти бессмысленные строчки ? Изучаю написание драйверов для пользовательского режима Виндов. Для начала на малознакомом мне C++ (ранее писал только на чистом C, когда не на ассемблере) раз на нем пишут подобное, а потом может переведу на другой, более любимый язык когда все станет ясно что там к чему и почему. Вот такой фрагмент чужого образцово показательного драйвера меня удивил extern "C" BOOL WINAPI DllMain(HINSTANCE... https://www.cyberforum.ru/ c-cpp/ thread2479478.html
C/C++ #import библиотеки в зависимости от версии Excel
Добрый день! В своём приложении экспортирую в Excel данные. Сейчас всё настроено под Excel 2013. #import "C:\\Program Files\\Common Files\\microsoft shared\\OFFICE15\\MSO.DLL" #import "C:\\Program Files\\Microsoft Office\\OFFICE15\\EXCEL.EXE" Как загрузить библиотеку в зависимости от версии Excel? Предварительно узнав версию, например в реестре. Для того, что бы можно было работать с...
C/C++ Возможно ли произвести безопасное извлечение USB? https://www.cyberforum.ru/ c-cpp/ thread2471323.html
В задании просится написать программу, которая может находить подключенные USB устройства и безопасно их отключать. Я искал такую возможность на Python 3 и C++, но ничего, кроме отключение самого порта, не находил. Нужно, чтобы происходило безопасное отключение USB устройства, но сам порт продолжал работать.
25 / 12 / 5
Регистрация: 12.01.2020
Сообщений: 419
31.03.2020, 15:42  [ТС] 0

Работа с БД: с чего начать - C/C++ - Ответ 14382544

31.03.2020, 15:42. Показов 43573. Ответов 72
Метки (Все метки)

Ответ

Вы, насколько я понял, путаете параметр SQL-запроса и параметры метода Command ADO.
В том коде, про который Вы говорите, действительно, Command используется не по назначению. Я уже разобрался с этим. Теперь код выглядит иначе:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#pragma warning(disable : 4996)
#include <string>
#include <iostream>
#import "c:/Program Files/Common Files/System/ADO/msado15.dll" rename("EOF","AdoNSEOF")
using namespace std;
using namespace ADODB;//необходимо для макросов AD_BINDING
inline void TESTHR(HRESULT x)
{
    if FAILED(x) _com_issue_error(x);
};
void OpenX();
void PrintProviderError(_ConnectionPtr pConnection);
void PrintComError(_com_error& e);
 
int main1()
{
    if (FAILED(::CoInitialize(NULL)))
        return -1;
 
    OpenX();
    ::CoUninitialize();
}
 
void OpenX()
{
    // Define ADO object pointers.  Initialize pointers on define.  
    // These are in the ADODB:: namespace  
    _RecordsetPtr pRSet = NULL;
    _ConnectionPtr pConnection = NULL;
 
    setlocale(LC_ALL, "Russian");
    _bstr_t strCnn("Provider='Microsoft.ACE.OLEDB.16.0'; Data Source='D:\\Parik.accdb'; ''; ''; 0");
try
    {
        // открываем соединение и набор записей  
        TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
        pConnection->Open(strCnn, "", "", adConnectUnspecified);
        string a;
        if (pConnection->State == 1) a = "Connection enabled";
        else a = "Connection don't enabled";
        printf ("Connection status: ",  a );
        TESTHR(pRSet.CreateInstance(__uuidof(Recordset)));
        pRSet->Open("Select * From Enterprise", _variant_t((IDispatch*)pConnection, true),
            adOpenKeyset, adLockOptimistic, adCmdText);
 
        if (pRSet->State == 1) a = "Recordset enabled";
        else a = "Recordset don't enabled";
        cout << "Recordset status: " << a << "\n";
 
        FieldsPtr pFields;
        FieldPtr pField;
        pFields = pRSet->Fields;
        int nNumFields = pRSet->Fields->Count;
        int nNumRows = pRSet->RecordCount;
        cout << "Количество записей (строк) в RecordSet: " << nNumRows << "\n";
        char* pName;
        int const n = 10;
        char const m = 20;
        char* Arr[n][m];
        int i;
        int k;
        //int a = 0;
        for (i = 0; i < nNumFields; i++)
        {
            pName = new char[pRSet->Fields->Item[(HRESULT)i]->Name.length()];
            strcpy(pName, (LPCSTR)pRSet->Fields->Item[(HRESULT)i]->Name);
            Arr[i][0] = pName;
            fprintf(stderr, "%s                        ", Arr[i][0]);
        }
        cout << "" << "\n";
        pRSet->AbsolutePosition; //устанавливаем курсор в начало
 
        while (!pRSet->AdoNSEOF)
        {
            for (i = 0, k = 0; i < nNumFields; i++, k++)
            {
                cout << _bstr_t(pRSet->Fields->Item[Arr[k][0]]->Value) << "                           ";
                if (k == nNumFields - 1) cout << "\n ";
 
            }
            pRSet->MoveNext();
        }
 
}
    catch (_com_error& e)
    {
        // Display errors, if any. Pass a connection pointer accessed from the Connection.  
        PrintProviderError(pConnection);
        PrintComError(e);
    }
 
    // Clean up objects before exit.  
    if (pRSet)
        if (pRSet->State == adStateOpen)
            pRSet->Close();
    if (pConnection)
        if (pConnection->State == adStateOpen)
            pConnection->Close();
 
    system("PAUSE");
}
 
void PrintProviderError(_ConnectionPtr pConnection)
{
    // Print Provider Errors from Connection object.  
    // pErr is a record object in the Connection's Error collection.  
    ErrorPtr pErr = NULL;
 
    if ((pConnection->Errors->Count) > 0)
    {
        long nCount = pConnection->Errors->Count;
        // Collection ranges from 0 to nCount -1.  
        for (long i = 0; i < nCount; i++)
        {
            pErr = pConnection->Errors->GetItem(i);
            //printf("\t Error number: %x\t%s", pErr->Number, pErr->Description);
            cout << "Error number: " << (pErr->Number, pErr->Description) << "\n";
        }
    }
}
 
void PrintComError(_com_error& e)
{
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description());
 
    // Print COM errors.   
    printf("Error\n");
    printf("\tCode = %08lx\n", e.Error());
    //printf("\tCode meaning = %s\n", e.ErrorMessage());
    cout << "Code meaning " << e.ErrorMessage() << "\n";
    printf("\tSource = %s\n", (LPCSTR)bstrSource);
    printf("\tDescription = %s\n", (LPCSTR)bstrDescription);
}
Надо сказать, что все проблемы у меня были из-за операционной системы. После переустановки оной всё сделал сам. Кстати, надо скачать AccessDatabaseEngine_X64, чтобы мой код работал. Это я сделал отсюда. Теперь всё работает: делается запрос к БД и данные таблицы выводятся в консоль.
В настоящий момент работаю над выводом данных таблицы в Windows Forms.

Добавлено через 15 минут
Забыл добавить в код две строки:
C++
1
2
pRSet->Close();
    pConnection->Close();


Вернуться к обсуждению:
Работа с БД: с чего начать C/C++
0
Заказать работу у эксперта
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2020, 15:42
Готовые ответы и решения:

работа с графикой. с чего начать?
Итак,есть консольный морской бой. Возможно ли сделать на него графическую оболочку и что для этого...

Работа с API. С чего начать?
Всем привет! Мне надо написать скрипт который работает с другим сайтом с помощью API. Так как я...

Дипломная работа. С чего начать ?
Привет всем. Получил тему дипломной работы. Построение информационного словаря признаков для...

Работа с изображениями, с чего начать?
Подскажите, пожалуйста, необходимо реализовать сжатие изображения из формата bmp в jpeg, никогда с...

72
31.03.2020, 15:42
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2020, 15:42
Помогаю со студенческими работами здесь

Работа в интернете, с чего начать?
всем здрасте :) я вот решил занятся заработком в интернете, но не знаю с чего лучше начать. знаю...

Работа со структурами, подскажите с чего начать
Здравствуйте, знатоки ,мне нужна ваша помощь :) Вообщем, мне надо сделать лабораторную по...

Работа со списками, подскажите с чего начать
Работа со списками: в списке целых чисел удалить из каждой группы подряд идущих одинаковых...

Работа с файлами,чтение/запись, не знаю даже с чего начать
У администратора железнодорожных касс хранится информация о свободных местах в поездах дальнего...

0
Новые блоги и статьи
Преобразование полей (элементов управления содержимым) в обычный текст
РоΜа 23.01.2025
Возникла необходимость преобразовать поля в текст (те, что на вкладке разработчик добавляются) . Помучившись родил следующее: Sub ПоляВТекст() Преобразует все поля в текст (даты, текст,. . .
Как проверить существование директории в скрипте Bash
bt_guru 23.01.2025
При разработке скриптов Bash одной из ключевых задач является корректная работа с файловой системой, где особое место занимает проверка существования директорий. Эта операция становится критически. . .
Как работают срезы (slice) в Python
bytestream 23.01.2025
Python предоставляет разработчикам мощный и гибкий инструмент для работы с последовательностями данных - срезы (slices). Эта функциональность позволяет извлекать, модифицировать и управлять. . .
Как удалить подмодуль (submodule) в Git
bytestream 23.01.2025
При работе с крупными проектами в системе контроля версий Git разработчики часто сталкиваются с необходимостью управления зависимостями и внешними компонентами. Подмодули (submodules) представляют. . .
В чем разница между @staticmethod и @classmethod в Python. Декораторы методов
bytestream 23.01.2025
В Python декораторы методов представляют собой мощный инструмент, позволяющий модифицировать поведение функций и методов без изменения их исходного кода. Эта возможность является одной из. . .
Как преобразовать InputStream в String в Java
bytestream 23.01.2025
В мире Java-разработки работа с потоками данных является одной из ключевых операций при создании современных приложений. InputStream, как фундаментальный класс для обработки входных потоков данных,. . .
Как обновить форк (ответвление) репозитория в Git
bytestream 23.01.2025
Одним из наиболее мощных инструментов Git для организации совместной работы является механизм форкинга репозиториев, который позволяет создавать независимые копии проектов для дальнейшей разработки. . . .
Как работает async/await в C#. Асинхронное программировани­е в .NET
bytestream 23.01.2025
Введение в асинхронное программирование Асинхронное программирование представляет собой важнейшую концепцию современной разработки программного обеспечения, особенно в контексте создания. . .
КуМир: полное руководство
bytestream 23.01.2025
Введение в КуМир: история создания и назначение КуМир (Комплект Учебных МИров) представляет собой образовательную среду программирования, которая была создана для обучения основам алгоритмизации и. . .
Что такое OLAP. Где и как использовать многомерный анализ данных
bytestream 23.01.2025
Введение в OLAP-технологии В современном мире бизнес-аналитика и обработка больших массивов данных играют ключевую роль в принятии стратегических решений. Организации накапливают огромные объемы. . .
MongoDB: что это, для чего нужна и как использовать
bytestream 23.01.2025
Введение в MongoDB: современная документоориентированная СУБД В современном мире разработки программного обеспечения выбор правильной системы управления базами данных является критически важным. . .
Как использовать закрытый ключ шифрования в Git. Шифрование в Git
bytestream 23.01.2025
Установка и настройка закрытых ключей в Git предоставляет дополнительный уровень безопасности для работы с репозиториями. Для начала необходимо создать пару ключей, обычно это осуществляется с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru