Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2010, 09:48   #31
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Как праильно подключится к своему хостингу?
Возможно у Вас нет доступа для подключению к СУБД из внешней сети?
psycho-coder вне форума Ответить с цитированием
Старый 27.11.2010, 00:59   #32
Redas
Пользователь
 
Регистрация: 25.01.2008
Сообщений: 13
По умолчанию

Какой Builder лучше использовать? От CodeGear?

Последний раз редактировалось Redas; 27.11.2010 в 01:05.
Redas вне форума Ответить с цитированием
Старый 27.11.2010, 08:34   #33
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Лучше конечно же MS Visual Studio.
psycho-coder вне форума Ответить с цитированием
Старый 27.11.2010, 10:22   #34
Redas
Пользователь
 
Регистрация: 25.01.2008
Сообщений: 13
По умолчанию

Хорошо, у меня 8ая версия. Теперь еще один совсем глупый вопрос:
Куда вводить то код? Допустим этот:
http://programmersforum.ru/showpost....16&postcount=2

Я создаю новый проект, Visual C++ Windows Form Applictaion с названием 333. Где исходный код программы?
Этот - 333.cpp в папке source files? Там такой код:
PHP код:
// 333.cpp : main project file.

#include "stdafx.h"
#include "Form1.h"

using namespace My333;

[
STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    
// Enabling Windows XP visual effects before any controls are created
    
Application::EnableVisualStyles();
    
Application::SetCompatibleTextRenderingDefault(false); 

    
// Create the main window and run it
    
Application::Run(gcnew Form1());
    return 
0;

Сюда копировать твой пост?

Скопировал, выдает кучу ошибок .
И куда копировать файлы в первом посте?
1) libmysql.lib я скопировал в C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib
2) все файлы из Include скопировал в C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include
3) а вот куда копировать libmySQL.dll я не знаю

Вот такой код получился в итоге:
PHP код:
// 333.cpp : main project file.

#include "stdafx.h"
#include "Form1.h"
#define __LCC__ // Объявляем директиву без которой программа не может работать. Можно конечно поключить windows.h, но это будет не красиво
#pragma comment(lib, "libmysql.lib") // подключаем библиотеку
#include <mysql.h> // Заголовочный файл с описание функций
#include <stdio.h>
#include <conio.h>


using namespace My333;

[
STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    
// Enabling Windows XP visual effects before any controls are created
    
Application::EnableVisualStyles();
    
Application::SetCompatibleTextRenderingDefault(false); 

    
// Create the main window and run it
    
Application::Run(gcnew Form1());
    
    
mysql("SELECT * FROM t_mid_author"); // Запрос
    
getch(); // Ожидаем нажатие клавиши
  
return 0;
}
void mysql(const char query[])
{
    
MYSQL mysql// Дескриптор соединения
    
MYSQL_ROW row// Массив полей текущей строки
    
MYSQL_RES *res// Дескриптор результирующей таблицы

    
char host[] = "localhost"// хост
    
char user[] = "admin"// пользователь
    
char passwd[] = "admin"// пароль
    
char db[] = "library"// название базы данных
    
int port 0//  порт. Если порт у сервера MySQL не по умолчанию (3306), то нужно указывать конкретный номер порта

    
mysql_init(&mysql);  // Инициализация
    
mysql_real_connect(&mysqlhostuserpasswddbportNULL0); // соединение

    
if (mysql_query(&mysqlquery) > 0// запорс. Если ошибок нет, то продолжаем работу
        
{
            
            
// Если была ошибка, ...
            
printf("%s"mysql_error(&mysql));  // ... вывдем ее
            
return; // и завершим работу
        


    
res mysql_store_result(&mysql); // Берем результат,
    
int num_fields mysql_num_fields(res); // количество полей
    
int num_rows mysql_num_rows(res); // и количество строк.

    
for (int i 0num_fieldsi++) // Выводим названия полей
    
{
      
field mysql_fetch_field_direct(resi); // Получение названия текущего поля
      
printf("| %s |"field->name);
    }

    
printf("\n");
    
    for (
int i 0num_rowsi++) // Вывод таблицы
    
{
      
row mysql_fetch_row(res); // получаем строку

      
for (int l 0num_fieldsl++)
        
printf("| %s |"row[l]); // Выводим поля
        
      
printf("\n");
    }
    
    
printf("Count records = %d"num_rows); // Вывод информации о количестве записей
      
mysql_free_result(res); // Очищаем результаты
    
mysql_close(&mysql); // Закрываем соединение

И такие вот ошибки:
PHP код:
Error    1    error C3861'mysql'identifier not found    c:\Projects\Projects\333\333\333.cpp    23    333
Warning    2    warning C4244
'initializing' conversion from 'my_ulonglong' to 'int'possible loss of data    c:\Projects\Projects\333\333\333.cpp    52    333
Error    3    error C2065
'field' undeclared identifier    c:\Projects\Projects\333\333\333.cpp    56    333
Error    4    error C2065
'field' undeclared identifier    c:\Projects\Projects\333\333\333.cpp    57    333
Error    5    error C2227
left of '->name' must point to class/struct/union/generic type    c:\Projects\Projects\333\333\333.cpp    57    333
Error    6    error C2731
'main' : function cannot be overloaded    c:\Projects\Projects\333\333\333.cpp    78    333 

Последний раз редактировалось Redas; 27.11.2010 в 11:08.
Redas вне форума Ответить с цитированием
Старый 27.11.2010, 18:04   #35
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Это хорошо, что вы пробуете сами написать приложение. Но нужно еще понимать что там происходит!

Теперь по порядку
1) Откройте файл Form1.h (рис1)
2) Сделайте примерный интерфейс (рис2). DataGridView и Button
3) Добавьте две функции конвертации для Window Forms из первого поста.
4) Для обработчика кнопки написать следующий код.
Код:
 mysql("SELECT * FROM t_mid_author");
5) Измените функцию mysql к такому виду.
Код:
		private: void mysql(const char query[])
			 {
				 MYSQL mysql; // Дескриптор соединения
				 MYSQL_ROW row; // Массив полей текущей строки
				 MYSQL_RES *res; // Дескриптор результирующей таблицы
				 MYSQL_FIELD *field; // Данные о полях

				 char host[] = "localhost"; // хост
				 char user[] = "admin"; // пользователь
				 char passwd[] = "admin"; // пароль
				 char db[] = "library"; // название базы данных
				 int port = 0; //  порт. Если порт у сервера MySQL не по умолчанию (3306), то нужно указывать конкретный номер порта

				 String^ field_name = "";

				 mysql_init(&mysql);  // Инициализация
				 mysql_real_connect(&mysql, host, user, passwd, db, port, NULL, 0); // соединение

				 if (mysql_query(&mysql, query) > 0) // запорс. Если ошибок нет, то продолжаем работу
				 {

					 // Если была ошибка, ...
					 Windows::Forms::MessageBox::Show(ToUCS2(mysql_error(&mysql)));  // ... вывдем ее
					 return; // и завершим работу
				 } 

				 res = mysql_store_result(&mysql); // Берем результат,
				 int num_fields = mysql_num_fields(res); // количество полей
				 my_ulonglong num_rows = mysql_num_rows(res); // и количество строк.

				 for (int i = 0; i < num_fields; i++) // Выводим названия полей
				 {
					 field = mysql_fetch_field_direct(res, i); // Получение названия текущего поля
					 field_name = ToUCS2(field->name);
					 dataGridView1->Columns->Add(field_name, field_name);
					 //printf("| %s |", field->name);
				 }

				 dataGridView1->Rows->Add((int)num_rows);

				 //printf("\n");

				 for (int i = 0; i < num_rows; i++) // Вывод таблицы
				 {
					 row = mysql_fetch_row(res); // получаем строку

					 for (int l = 0; l < num_fields; l++)
						 dataGridView1->Rows[i]->Cells[l]->Value = ToUCS2(row[l]);
						 //printf("| %s |", row[l]); // Выводим поля

					 //printf("\n");
				 }

				 //printf("Count records = %d", num_rows); // Вывод информации о количестве записей
				 mysql_free_result(res); // Очищаем результаты
				 mysql_close(&mysql); // Закрываем соединение
			 }
Результат рис3
Изображения
Тип файла: jpg рис1.JPG (18.6 Кб, 243 просмотров)
Тип файла: jpg рис2.JPG (20.8 Кб, 267 просмотров)
Тип файла: jpg рис3.JPG (35.0 Кб, 241 просмотров)
psycho-coder вне форума Ответить с цитированием
Старый 27.11.2010, 19:04   #36
Redas
Пользователь
 
Регистрация: 25.01.2008
Сообщений: 13
По умолчанию

Цитата:
Сообщение от psycho-coder Посмотреть сообщение
Это хорошо, что вы пробуете сами написать приложение. Но нужно еще понимать что там происходит!

Теперь по порядку
1) Добавьте две функции конвертации для Window Forms из первого поста.
2) Измените функцию mysql к такому виду.
Результат рис3
Спасибо за помощь, но как понять "для Window Forms"? Куда именно их вставлять?
И такой же глупый вопрос, где изменить функцию mysql?
Redas вне форума Ответить с цитированием
Старый 29.12.2010, 11:55   #37
user281210
Новичок
Джуниор
 
Регистрация: 28.12.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Redas Посмотреть сообщение
Спасибо за помощь, но как понять "для Window Forms"? Куда именно их вставлять?
И такой же глупый вопрос, где изменить функцию mysql?
Мдаааааа, Redas, изучите сначало основные принципы программирования на C++, потом принципы программирования в MS VC++, в том числе и Windows Forms, а потом уже задавайте вопросы.......
user281210 вне форума Ответить с цитированием
Старый 29.12.2010, 12:31   #38
user281210
Новичок
Джуниор
 
Регистрация: 28.12.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от malik555 Посмотреть сообщение
Я только не понял а что выводить данные можно только по номеру поля

printf(row[0]); ?

а по имени что нельзя ? например printf(row["name"]); ?
Что вам мешает руками написать обработчик результатов массива row. Скажем сохраняете результаты запроса в многомерный массив и работаете с ним.....
user281210 вне форума Ответить с цитированием
Старый 01.01.2011, 00:17   #39
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Мдаааааа, Redas, изучите сначало основные принципы программирования на C++, потом принципы программирования в MS VC++, в том числе и Windows Forms, а потом уже задавайте вопросы.......
Этот вопрос мы уже решили))
Цитата:
Что вам мешает руками написать обработчик результатов массива row. Скажем сохраняете результаты запроса в многомерный массив и работаете с ним.....
Видимо привыкли к готовым объектным классам/библиотекам, вот и мучаются с API функциями )
psycho-coder вне форума Ответить с цитированием
Старый 02.02.2011, 23:01   #40
Freddi Krjuger
Пользователь
 
Регистрация: 20.08.2010
Сообщений: 37
По умолчанию

подскажите книгу для подключение базы данных с с++ или java,спасибо
Freddi Krjuger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с MySQL в С++ с использованием библиотеки mysql++ oleg kutkov Visual C++ 5 30.12.2010 16:40
Работа с MySQL в Дельфи 7 drakhar БД в Delphi 8 01.12.2010 21:13
Работа с MySQL igroman PHP 10 29.09.2008 16:15
Работа с MySql zetrix PHP 1 18.06.2007 15:02