Вопрос по С++

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
 

Пух

كنت بلهاء
Модератор
sps принцип понял

но думаю что размерность m*n нуна будет выдвигать приглашение ввести размерность, а потом и сами массивы:x
тогда нужно создавать большие массивы (например 100 на 100 или больше).
Код:
int n,m;
scanf("%d%d",&n,&m);
int a[n][m];
работать не будет в Си.
 
Или же динамически выделив память под указатель:

#include <calloc.h>

int **a;
int n,m;
a=(int**)malloc(n*m*sizeof(int));
Или как-то так. Давно не работал с malloc, да и с С вообще, так что прошу извинить если ошибся где-то. В основном работаю в C++ и выделяю память через new
 

Пух

كنت بلهاء
Модератор
Или же динамически выделив память под указатель:



Или как-то так. Давно не работал с malloc, да и с С вообще, так что прошу извинить если ошибся где-то. В основном работаю в C++ и выделяю память через new
Код:
#include <stdlib.h>

int main(){
   int *a, n = 5, m = 6;
   a = (int*)malloc(n*m*sizeof(int));
   return 0;
}
int **a - это уже указатель на указатель и он тут не нужен. Тогда уже лучше массив указателей описать и для каждого элемента массива выделить m*sizeof(int) памяти

можно выделить участок память длинной m*n, и имитировать работу с двумерным массивом.
 
Останнє редагування:
Зверху