.net — Как мне установить стабильное соединение с SQL Server 2008 и кодировать мои первые операции CRUD в Stack Overflow

Как установить связь между моим проектом C ++ и SQL Server 2008? Ссылаясь на некоторые статьи в Интернете, лучше всего использовать ADO.NET API. Я искал несколько примеров кода, выполняющих операции crud и показывающих, как установить соединение с БД, и вот лучший учебник, который я нашел.

Проблема здесь, после создания нового проекта New> Visual C ++> Empty Project (.NET Framework 4.5), возникли некоторые ошибки, когда я скопировал / вставил первый фрагмент, а именно:

// This is the main project file for VC++ application project
// generated using an Application Wizard.

#include "stdafx.h"// Standard
#using <mscorlib.dll>
#using <System.dll>
#using <system.data.dll> // This is required for the ADO.NET Provider
#include <tchar.h>

using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;

// This is the entry point for this application
int _tmain(void)
{
SqlConnection      * mySQLConnection;
SqlCommand         * mySQL;
SqlDataReader      * myReader;

try
{
mySQLConnection = new SqlConnection(
S"server=local;Trusted_Connection=yes;database=pubs;");
mySQL = new SqlCommand (S"select * from authors",
mySQLConnection);

mySQLConnection->Open (); // Open up the connection
myReader = mySQL->ExecuteReader ();

while(myReader->Read ())
Console::WriteLine(myReader->get_Item("au_lname")->ToString ());
}
catch(Exception * e)
{
Console::Write(e->ToString () );
}
__finally
{
myReader->Close ();
mySQLConnection->Close();
}
return 0;
}

вот первая ошибка 22:

2 IntelliSense: для «#using» требуется режим C ++ / CLI c: \ Users \ Nectarys \ Documents \ Visual Studio 2013 \ Projects \ Project2 \ Project2 \ Source.cpp

Как мне это исправить, пожалуйста? (Если проблема возникла у поставщика, как я могу проверить, установлена ​​ли она у меня и установлена ​​ли у меня правильная версия?)

Замечания : Я включил «stdafx.h» в свой проект. Я не установил никакой провайдер после этого копирования / вставки.

0

Решение

Ошибка в том, что в вашем проекте не установлен флаг Common Language Runtime, поэтому он пытается скомпилировать как собственный код, а не как управляемый. Чтобы установить флаг, щелкните правой кнопкой мыши по проекту и выберите «Свойства», в общем разделе есть опция «Common Language Runtime Support».

Учебное пособие, на которое вы ссылаетесь, написано в 2002 году и использует управляемый C ++, который был представлен до CLI / C ++. Чтобы скомпилировать управляемый C ++, необходимо установить флаг / clr: oldsyntax. Visual Studio intellisense выдаст вам ошибки, потому что он не поддерживает управляемый C ++, только CLI / C ++. Руководство по миграции здесь: http://msdn.microsoft.com/en-us/library/ms235289.aspx, но по сути вам нужно заменить звездочки в объявлениях переменных на шляпы («^»), использовать gcnew вместо new, не ставить «S» перед строками (они автоматически управляются строками в управляемом коде), и измените способ доступа к элементу считывателя, чтобы использовать массив доступа. Новый код будет таким (скомпилировать с / clr):

#using <mscorlib.dll>
#using <System.dll>
#using <system.data.dll> // This is required for the ADO.NET Provider
#include <tchar.h>

using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;

// This is the entry point for this application
int _tmain(void)
{
SqlConnection      ^ mySQLConnection;
SqlCommand         ^ mySQL;
SqlDataReader      ^ myReader;

try
{
mySQLConnection = gcnew SqlConnection(
"server=local;Trusted_Connection=yes;database=pubs;");
mySQL = gcnew SqlCommand ("select * from authors",
mySQLConnection);

mySQLConnection->Open (); // Open up the connection
myReader = mySQL->ExecuteReader ();

while(myReader->Read ())
Console::WriteLine(myReader["au_lname"]->ToString ());
}
catch(Exception ^ e)
{
Console::Write(e->ToString () );
}
__finally
{
myReader->Close ();
mySQLConnection->Close();
}
return 0;
}

К сожалению, я не знаю руководства по использованию SqlClient, написанного на CLI / C ++.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]