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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2011, 13:22   #1
YaMolekula
 
Регистрация: 23.04.2011
Сообщений: 8
По умолчанию Ошибка при создании Базы Данных

Доброго Времени Суток! Я установил MySQL Server и следующий код по плану должен был создавать файл БД:

Код:
#include "stdafx.h"

#using <System.dll>
#using <System.Data.dll>
#using <System.Xml.dll>
#include <Windows.h>
#include <stdio.h>
#include <iostream>

using namespace System;
using namespace System::Data;
using namespace System::Data::Sql;
using namespace System::Data::SqlClient;
using namespace System::Data::SqlTypes;
using namespace Microsoft::SqlServer::Server;
using namespace System::Reflection;

using namespace System;

int main(array<System::String ^> ^args)
{
    String^ str;
    SqlConnection ^myConn = gcnew SqlConnection();
    str ="CREATE DATABASE test_db ON PRIMARY";
		
    SqlCommand ^myCommand = gcnew SqlCommand(str, myConn);
    try
    {
        myConn->Open();
        myCommand->ExecuteNonQuery();
        printf("DataBase is Created Successfully");
    }
    catch (Exception ^ex)
    {
        Console::WriteLine( "Error: {0}", ex->ToString() );
    }
    finally
    {
	if (myConn->State == ConnectionState::Open)
	{
		myConn->Close();
	}
    }
    system("pause");
    return 0;
}
Но вывелась ошибка следующего рода:
Цитата:
Error: System.Data.SqlClient.SqlException (0x80131904): При установлении соедине
ния с SQL Server произошла ошибка, связанная с сетью или с определенным экземпля
ром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано прав
ильно и что на SQL Server разрешены удаленные соединения. (provider: Named Pipes
Provider, error: 40 - Не удалось открыть подключение к SQL Server)
в System.Data.SqlClient.SqlInternalCo nnection.OnError(SqlException exception,
Boolean breakConnection)
в System.Data.SqlClient.TdsParser.Thr owExceptionAndWarning()
в System.Data.SqlClient.TdsParser.Con nect(ServerInfo serverInfo, SqlInternalC
onnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boole
an encrypt, Boolean trustServerCert, Boolean integratedSecurity)
в System.Data.SqlClient.SqlInternalCo nnectionTds.AttemptOneLogin(ServerI nfo s
erverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeou
t, SqlConnection owningObject)
в System.Data.SqlClient.SqlInternalCo nnectionTds.LoginNoFailover(ServerI nfo s
erverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection own
ingObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
в System.Data.SqlClient.SqlInternalCo nnectionTds.OpenLoginEnlist(SqlConn ectio
n owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, Str
ing newPassword, Boolean redirectedUserInstance)
в System.Data.SqlClient.SqlInternalCo nnectionTds..ctor(DbConnectionPoolI denti
ty identity, SqlConnectionString connectionOptions, Object providerInfo, String
newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
в System.Data.SqlClient.SqlConnection Factory.CreateConnection(DbConnecti onOpt
ions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection
owningConnection)
в System.Data.ProviderBase.DbConnecti onFactory.CreatePooledConnection(Db Conne
ction owningConnection, DbConnectionPool pool, DbConnectionOptions options)
в System.Data.ProviderBase.DbConnecti onPool.CreateObject(DbConnection owningO
bject)
в System.Data.ProviderBase.DbConnecti onPool.UserCreateRequest(DbConnecti on ow
ningObject)
в System.Data.ProviderBase.DbConnecti onPool.GetConnection(DbConnection owning
Object)
в System.Data.ProviderBase.DbConnecti onFactory.GetConnection(DbConnectio n own
ingConnection)
в System.Data.ProviderBase.DbConnecti onClosed.OpenConnection(DbConnectio n out
erConnection, DbConnectionFactory connectionFactory)
в System.Data.SqlClient.SqlConnection .Open()
в main(String[] args) в c:\cppwork\dbwork\condb0\condb0\con db0.cpp:строка 62
Для продолжения нажмите любую клавишу . . .
Я в этой области пока не очень разбираюсь и не совсем понимаю что это за ошибка. Подскажите пожалуйста, что мне нужно сделать для устранения этой ошибки?
YaMolekula вне форума Ответить с цитированием
Старый 26.10.2011, 12:48   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вы видимо поключаетесь к MS SQL , а не к MySQL. для того что бы подключиться к MySQL нужно скачать NetProvider после чего сделать соединение как написано в документации
psycho-coder вне форума Ответить с цитированием
Старый 27.10.2011, 10:41   #3
YaMolekula
 
Регистрация: 23.04.2011
Сообщений: 8
По умолчанию

Спасибо, psycho-coder! Я думал это не Netовский си. Я потом хотел написать аналогичную Win32 программу с оконным интерфейсом, а там, как я понимаю, у с++ нет возможности использовать Net-латформу.

В общем, я нашел здесь небольшой туториал по взаимодействию с MySQL и попытался запустить следующий код, кинув предварительно все lib и заголовочные файлы в стандартные директории:
Код:
#include "stdafx.h"

#define __LCC__ // Объявляем директиву без которой программа не может работать. Можно конечно поключить windows.h, но это будет не красиво

#pragma comment(lib, "libmysql.lib") // подключаем библиотеку
#pragma comment(lib,"mysqlclient.lib ")
#include <mysql.h> // Заголовочный файл с описание функций
#include <stdio.h>
#include <conio.h>

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), то нужно указывать конкретный номер порта

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

	if (mysql_query(&mysql, query) > 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 = 0; i < num_fields; i++) // Выводим названия полей
    {
      field = mysql_fetch_field_direct(res, i); // Получение названия текущего поля
      printf("| %s |", field->name);
    }

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

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

int main()
{
  mysql("SELECT * FROM t_mid_author"); // Запрос
  getch(); // Ожидаем нажатие клавиши
  return 0;
}
но возникли следующие ошибки:
Цитата:
1>------ Построение начато: проект: tutoMySQL, Конфигурация: Debug Win32 ------
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_close@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_free_result@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_fetch_row@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_fetch_field_direct@8 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_num_rows@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_num_fields@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_store_result@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_error@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_query@8 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_real_connect@32 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>tutoMySQL.obj : error LNK2019: ссылка на неразрешенный внешний символ _mysql_init@4 в функции "void __cdecl mysql(char const * const)" (?mysql@@YAXQBD@Z)
1>C:\CPPWORK\DBWork\tutoMySQL\Debug \tutoMySQL.exe : fatal error LNK1120: 11 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Можно ли что-то сделать в случае такой ошибки, что бы устранить её?

Последний раз редактировалось YaMolekula; 27.10.2011 в 10:55.
YaMolekula вне форума Ответить с цитированием
Старый 31.10.2011, 16:03   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

киньте
Код:
#pragma comment(lib, "libmysql.lib") // подключаем библиотеку
#pragma comment(lib,"mysqlclient.lib ")
рядом с прогой
psycho-coder вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заплачу за помощ ь в создании небольшого проектика по VS C++ и базы данных askerpro Фриланс 2 05.05.2011 15:50
Непонятная ошибка при попытке отобразить содержимое таблица базы данных в компоненте DBGrid. hk47 БД в Delphi 6 17.04.2010 08:05
застрял при создании базы Andruxa28 Microsoft Office Access 1 10.12.2009 12:35
Нужна помощь в создании базы данных IT Expence lisaniel Microsoft Office Access 1 29.06.2009 16:32
Interbase ошибка при создании базы Алёна БД в Delphi 13 10.02.2008 16:45