|
|
|
| в си++ я начинаю программировать. можно сказать, ничего не умею, поэтому мне необходима ваша помощь. поможите?
Задача1: в папке есть файл access с двумя таблицами надо прочитать его
я поставил себе VS 2005. C чего нечать работу? (чтобы вы мне подсказали, вам надо сказать окончательную задачу?)
p.s. плюс приму в подарок ссылки на литературу, которая мне поможет начать и закончить разработку (работа с папками, бд access, вывод таблиц и диаграмм) | |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 11:31)
| | Начать работу стоит с того, что надо поставить себе VС++ 6.0 ибо на 2005-м ничего скомпилить нереально...
А вот мсдн лучше взять самый последний (у меня стоит январь 2006-го) | |
|
|
|
|
|
|
|
для: alex19921992
(05.06.2007 в 07:49)
| | На vs 2005 работаю больше года, всё компилируется вполне реально :) | |
|
|
|
|
|
|
|
для: P@Sol
(04.06.2007 в 11:31)
| | Пример тестового консольного приложения для работы с mdb-файлом:
#include "stdafx.h"
#include <atlstr.h>
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
void Test()
{
HRESULT hr;
// создать объект connection (соединение)
_ConnectionPtr conn;
hr = conn.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
{
printf("Creation of connection object failed.");
return;
}
// открыть соединение (подключиться к базе данных)
_bstr_t connstr("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\temp\\db1.mdb;Mode=ReadWrite");
_bstr_t user("");
_bstr_t password("");
hr = conn->raw_Open(connstr, user, password, adConnectUnspecified);
if (FAILED(hr))
{
printf("Failed to open database.");
return;
}
// выполнить SQL-запрос [выборка записей, у которых поле ID меньше либо равно 2]
_CommandPtr cmd;
hr = cmd.CreateInstance(__uuidof(Command));
if (FAILED(hr))
{
printf("Creation of command object failed.");
return;
}
cmd->ActiveConnection = conn;
cmd->CommandText = "SELECT * FROM table1 WHERE id <= ?;";
cmd->Parameters->Append(cmd->CreateParameter("", adInteger, adParamInput, sizeof(int), 2));
_RecordsetPtr rst = cmd->Execute(NULL, NULL, adCmdText);
while (!rst->adoEOF)
{
// вывести на экран значение полей ID и NAME и перейти к следующей записи
_variant_t id = rst->GetCollect("id");
_variant_t name = rst->GetCollect("name");
wprintf(L"Id: %d Name: %s\n", (long)id, (wchar_t *)name.bstrVal);
rst->MoveNext();
}
}
int _tmain(int argc, _TCHAR* argv[])
{
// инициализировать COM
CoInitialize(NULL);
try
{
Test();
}
catch (_com_error &e)
{
CString desc;
desc.Format(TEXT("%s"), (const char*)e.Description());
CString err;
if (desc==TEXT("(null)")) err.Format(TEXT("Код ошибки: 0x%x"), (int)e.Error());
else err.Format(TEXT("Код ошибки: 0x%x Описание: %s"), (int)e.Error(), desc.GetString());
::MessageBox(::GetActiveWindow(), err.GetString(), TEXT("Ошибка"), MB_OK|MB_ICONEXCLAMATION);
}
system("pause");
return 0;
}
|
Как Вам нравится этот монстрик? :)) | |
|
|
|
|
|
|
|
для: oleg_alexeev
(05.06.2007 в 10:17)
| | у меня не компилятся все мои вирусы с перехватом системных функций и внедрения в процессы. | |
|
|
|
|
|
|
|
для: alex19921992
(05.06.2007 в 16:02)
| | Уверен, что немного (или много) повозившись, можно их скомпилировать. Ведь компилятор всегда говорит какая конструкция ему не понравилась и это можно поправить. Другое дело, что смысла в этом нет, раз они компилируются в vs6. | |
|
|
|