Когда я использую следующий код на своем домашнем компьютере, он прекрасно работает для меня. Тем не менее, я должен использовать его на нескольких разных машинах.
"Provider = Microsoft.ACE.OLEDB.12.0;"
Я думал, что это можно обойти, потому что он мне нужен в более универсальном формате, чтобы он работал на нескольких машинах.
Я надеялся, что может быть обходной путь, возможно, путем включения в код альтернативного поставщика (если это возможно) или оператора catch или if, который перезапустит код, но с альтернативным поставщиком, если он не могу найти первый.
Он будет изменен на Microsoft.Jet.OLEDB.4.0
Если кто-нибудь может немного поцарапать код, чтобы обойти это, чтобы моя программа могла взять учитывать оба провайдера, это было бы здорово, так как это сделало бы мои проекты более универсальными.
Фоновый код (игнорируйте небезопасные SQL, если вы не хотите это исправить):
OleDbDataReader^ openData(String^ fieldEntity, String^ field, String^ tableName)
{
String^ sqlstr = "SELECT * FROM ";
sqlstr += tableName + " WHERE " + field + " = " + fieldEntity;
OleDbConnection^ conn = nullptr;
conn = gcnew OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;" +
"Data Source =" + "myDatabaseV3.accdb");
OleDbCommand^ cmd = nullptr;
//fix this so that it will consider both providers.
conn->Open();
cmd = gcnew OleDbCommand(sqlstr, conn);
OleDbDataReader^ reader = cmd->ExecuteReader(System::Data::CommandBehavior::CloseConnection);
return reader;
}