Я строю проект на C ++ в Visual Studio 2012, и я начал с написания некоторых классов для доступа к базе данных. С помощью Инструменты данных SQL Server Мне удалось создать проект SQL в моем решении.
Теперь мой вопрос: как я могу использовать типы в пространстве имен System :: Data :: SqlClient для подключения к базе данных в моем коде? Все примеры, которые я получаю, используют базу данных в качестве ссылки.
заранее спасибо
Если мой ответ кому-то помогает, я использовал классы 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);
}
}
Этот вопрос / ответ может помочь на вставке.
Других решений пока нет …