sql — подключиться и запросить базу данных в Managed C ++ с помощью SqlConnection

Я строю проект на C ++ в Visual Studio 2012, и я начал с написания некоторых классов для доступа к базе данных. С помощью Инструменты данных SQL Server Мне удалось создать проект SQL в моем решении.

Теперь мой вопрос: как я могу использовать типы в пространстве имен System :: Data :: SqlClient для подключения к базе данных в моем коде? Все примеры, которые я получаю, используют базу данных в качестве ссылки.

заранее спасибо

0

Решение

Если мой ответ кому-то помогает, я использовал классы SqlDataReader и SqlCommand, чтобы выбрать некоторые данные из базы данных. Обратите внимание, что я получаю ConnectionString из App.Config, который я создал ранее (как это можно сделать).

SqlDataReader getSqlDataReader(String ^_sql)
{
SqlDataReader ^_sqlDataReader = nullptr;

SqlConnection ^_connection = gcnew SqlConnection();

ConnectionStringSettings ^connectionSettings = ConfigurationManager::ConnectionStrings["AppDefaultConnection"];
this->_connection->ConnectionString = connectionSettings->ConnectionString;

try {
this->_connection->Open();
}

catch (Exception ^_exception)
{
Console::WriteLine("Error : "  + _exception->Message);
return nullptr;
}

try
{
SqlCommand ^_sqlCommand = gcnew SqlCommand(_sql,_connection);
_sqlDataReader = _sqlCommand->ExecuteReader();
}

catch(Exception ^_exception)
{
Console::WriteLine("Error : "  + _exception->Message);
return nullptr;
}

return _sqlDataReader;
}

Чтобы правильно построить SQL, мы должны знать класс SqlParameter (пример для C #) и избегать SQL-инъекций.

Чтобы использовать функцию getSqlDataReader:

   SqlDataReader ^reader = getSqlDataReader(yourParameterizedQueryString);

List<TypeToFetch>^ data = gcnew List<TypeToFetch^>();
if(reader != nullptr && reader->HasRows)
{
TypeToFetch^ typeToFetch = gcnew TypeToFetch();
while(reader->Read())
{
// example
TypeToFetch->id = (int) reader["Id"];
TypeToFetch->name = reader["Name"]->ToString();
data->Add(typeToFetch);
}
}

Этот вопрос / ответ может помочь на вставке.

0

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

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

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