Я пишу приложение в Visual C ++ с использованием .NET 3.5 Framework, подключаясь к удаленному Microsoft SQL Server 2008 R2.
Однако, чтобы иметь возможность изменять строку подключения к моей базе данных без необходимостичтобы постоянно перекомпилировать, я хочу просто сохранить строку подключения в однострочный текстовый файл и загрузить ее во время выполнения.
Изначально, для целей тестирования, моя строка подключения была жестко закодирована в запросе, и онаработал без нареканий.Однако, когда я реализовал метод для чтения строки из текстового файла, я получил:
Произошла ошибка, связанная с сетью или экземпляром, при установлении соединения с SQL Server.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр)
И я понятия не имею, почему.Я изучил строку, которую читает программа во время выполнения, и они идентичны.Вот блок кода, относящийся к этой проблеме:
StreamReader^ read_db_conn_string = File::OpenText(System::IO::Directory::GetCurrentDirectory() + "\\db_conn_string.txt");
String^ db_conn_string = read_db_conn_string->ReadLine();
read_db_conn_string->Close();
bindingSource_Shop->DataSource = GetData("Select * From Shop", db_conn_string);
dataGridView_Shop->DataSource = bindingSource_Shop;
Вот метод GetData:
DataTable^ GetData( String^ sqlCommand, String^ connectionString )
{
SqlConnection^ Connection = gcnew SqlConnection( connectionString );
SqlCommand^ command = gcnew SqlCommand( sqlCommand,Connection );
SqlDataAdapter^ adapter = gcnew SqlDataAdapter();
adapter->SelectCommand = command;
DataTable^ table = gcnew DataTable;
adapter->Fill( table );
return table;
}
Чтобы сохранить рабочую версию в моем коде, я сохранил перегруженный метод GetDataи если я делаю это так, соединение SQL работает:
DataTable^ GetData(String^ sqlCommand)
{
String^ connectionString = "Data Source=SERVER\\SQLEXPRESS;Initial Catalog=Schedule;Persist Security Info=True;User ID=sa;Password=xxxxx";
SqlConnection^ Connection = gcnew SqlConnection( connectionString );
SqlCommand^ command = gcnew SqlCommand( sqlCommand,Connection );
SqlDataAdapter^ adapter = gcnew SqlDataAdapter();
adapter->SelectCommand = command;
DataTable^ table = gcnew DataTable;
adapter->Fill( table );
return table;
}
Боюсь, что это что-то действительно простое, но у меня просто нет понимания, чтобы это выяснить.