{<<В«SQLExecDirect DONE!В» <
// вибірка наступного рядка (1)
{= SQLFetch (hstmt); (SQL_SUCCESS == retcode)
{
// вибірка даних з колонок (hstmt, 1, SQL_C_LONG, & sStorageID, 0, & cbStorageID); (hstmt, 2, SQL_C_CHAR, szName, SIZE_BUF, & cbName); (hstmt , 3, SQL_C_LONG, & sSeries, 0, & cbSeries); (hstmt, 4, SQL_C_CHAR, szColor, SIZE_BUF, & cbColor); (hstmt, 5, SQL_C_LONG, & sYear, 0, & cbYear); (hstmt, 6, SQL_C_LONG, & sCost, 0, & cbCost);
[countStr] = new char [SIZE_BUF]; (message [countStr], В«% d t% s t% d t% s t% d t% d nВ» , sStorageID, szName, sSeries, szColor, sYear, sCost); <
} break;
}
// пересилаємо результат кліентуcountStrSend = countStr; _Send (& countStrSend, 1, MPI_INT, 0, ProcRank, MPI_COMM_WORLD);// скільки рядків <<В«countStrSend =В» <
(int i = 0; i
{len = strlen (message [i]) + 1; _Send (& len, 1, MPI_INT, 0, ProcRank, MPI_COMM_WORLD); _Send (message [i], len, MPI_CHAR, 0 , ProcRank, MPI_COMM_WORLD);// самі рядки
}
} cout <<В«SQLExecDirect ErrorВ»;
}
// Закриваємо з'єднання (hdbc); (hdbc); (henv);
<
}
Додаток 2. Результат роботи програми
В
Малюнок 8 Бази даних зареєстровані в ODBC
В
Малюнок 9 База даних (Storage) клієнта перед виконанням SQL-запиту (порожній)
В
Малюнок 10 База даних (Storage1) сервера 1 (містить інформацію)
В
Малюнок 11 База даних (Storage2) сервера 2 (містить інформацію)
В
Малюнок 12 База даних (Storage3) сервера 3 (містить інформацію)
В
Малюнок 13 Реакція всіх програм системи на SQL-запит Select * from Storage
В
Малюнок 14 Реакція клієнта на SQL-запит Select * from Storage
В
Малюнок 15 Реакція сервера 1 на SQL-запит Select * from Storage
В
Малюнок 15 Реакція сервера 2 на SQL-запит Select * from Storage
В
Малюнок 16 Реакція сервера 3 на SQL-запит Select * from Storage
В
Малюнок 17 База даних (Storage) клієнта після виконанням SQL-запиту Select * from Storage
В
Малюнок 18 Реакція всіх програм системи на SQL-запит Select * from Storage where Number = 11173
В
Малюнок 19 Реакція клієнта на SQL-запит Select * from Storage ...