我在Visual Studio 2012中使用C ++构建项目,并且我已经开始编写一些用于数据库访问的类。使用SQL Server data tools我设法在我的解决方案中创建一个SQL项目。
现在,我的问题是:如何使用System :: Data :: SqlClient命名空间中的类型连接到我的代码中的数据库?我得到的所有示例都使用数据库作为参考。
提前致谢
答案 0 :(得分:0)
如果我的回答对某人有帮助,我使用了类SqlDataReader和SqlCommand来从db中选择一些数据。请注意,我是从之前创建的App.Config中获取ConnectionString的(how it could be done)。
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(example for 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);
}
}
This question/answer可以帮助INSERT。