Вопрос по С++

Интерисует один вопрос по MFC (извините если немного не по теме). Есть источник данных, на сервере, нужно к нему подключиться и с помощью SQL запросов вывести оттуда информацию. К серверу я подключиться могу, а как вывести результат запроса на экран?

CDb db;
db.Open("localhost",FALSE,FALSE,"DRIVER={Microsoft ODBC for Oracle};UID=login;PWD=pass;SERVER=localhost");

db.ExecuteSQL("SELECT * FROM Emp");


Есть класс CDb производный от CDatabase. Есть функция с выполнением запроса: ExecuteSQL, а как мне получить теперь оттуда вернувшийся результат и вывести, например, в текстовое поле EditControl или ListBox?
 
Відповідь: Re: Вопрос по С++

Интерисует один вопрос по MFC (извините если немного не по теме). Есть источник данных, на сервере, нужно к нему подключиться и с помощью SQL запросов вывести оттуда информацию. К серверу я подключиться могу, а как вывести результат запроса на экран?

CDb db;
db.Open("localhost",FALSE,FALSE,"DRIVER={Microsoft ODBC for Oracle};UID=login;PWD=pass;SERVER=localhost");

db.ExecuteSQL("SELECT * FROM Emp");


Есть класс CDb производный от CDatabase. Есть функция с выполнением запроса: ExecuteSQL, а как мне получить теперь оттуда вернувшийся результат и вывести, например, в текстовое поле EditControl или ListBox?
ExecuteSQL используется для добавления, удаления или обновления , записей , она не возвращает результата запроса.
нужная функция должна быть в CRecordset или CRecordView
 
Re: Відповідь: Re: Вопрос по С++

ExecuteSQL используется для добавления, удаления или обновления , записей , она не возвращает результата запроса.
нужная функция должна быть в CRecordset или CRecordView
Спасибо, с этим разобрался. Есть такие функции (в классе CRecordset):
rs.Open();
rs.IsEOF();
rs.GetFieldValue();
rs.MoveNext();
пытаюсь в цикле с их помощью вывести записи, и их выводит. Но не всё так хорошо как хотелось бы, выводит записи только из первого столбца таблицы. Как быть в таком случае? Отдельный GetFieldValue() и ListBox создать для других столбцов БД? Но ведь с другой стороны это не выход, так как при запросе я не могу точно сказать с каким количеством столбцов мне придется работать. Вот мой код:
{
CDb db;

db.Open("localhost",FALSE,FALSE,"DRIVER={Oracle in XE};UID=SYSTEM;PWD=1;SERVER=localhost");
if(db.IsOpen())
{
AfxMessageBox("Connected");
}
else
{
AfxMessageBox("Not Connected");
return;
}

CRecordset rs(&db);
CString s,z;

rs.Open(CRecordset::forwardOnly,"SELECT fname, duration, genre FROM Film WHERE fname LIKE '% %'",CRecordset::readOnly);
while(!rs.IsEOF())
{
rs.GetFieldValue(short(0),s);
m_list1.AddString(s);
rs.MoveNext();
}
rs.Close();
}


В данном случае выводит только колонку fname, потому что в функции rs.GetFieldValue(short(0),s);
 
Останнє редагування:

dengolius

Юзверь
Модератор
Помогите с этой вещью...=)

Просумировать елементы столбцов данной матрицы с размерностью nxm, результат получить в одномерном массиве. Заранее спс
 
Відповідь: Re: Вопрос по С++

в том что я раму не собераю в С
мне легче поставить сервер какойнить игры, настроить сайт(php css html) и тд, или настроить сеть и роутер

но вот С никак :(
меняй профессию или научись пользоваться поисковыми системами
 

Пух

كنت بلهاء
Модератор
в том что я раму не собераю в С
мне легче поставить сервер какойнить игры, настроить сайт(php css html) и тд, или настроить сеть и роутер

но вот С никак :(
если ты знаешь пхп, то тебе не составит труда написать 2 цикла
Код:
#include <stdio.h>
#define n 7 //кол-во строк
#define m 6 //кол-во столбцов
int main(){
   int a[n][m], b[m] = {0};
   int i,j;
   for (i = 0; i < n; i++){
       for (j = 0; j < m; j++){
            scanf("%d",&a[i][j]);
        } 
    }
    for (j = 0; j < m; j++){
       for (i = 0; i < n; i++){
             b[j] += a[i][j];
       }
    }
    return 0;
}
Писал прям тут, по этому не проверял ничего.
 

dengolius

Юзверь
Модератор
sps принцип понял

но думаю что размерность m*n нуна будет выдвигать приглашение ввести размерность, а потом и сами массивы:x
 
Зверху