У меня есть SDI MFC, и я хочу использовать CDatabase для подключения к удаленному SQL-серверу.MFC подключиться к серверу sql с ODBC
Я создал соединение ODBC на своем компьютере, а DSN - «TodoTest».
Вот мой код.
CDatabase db;
CString connStr = _T("DSN=TodoTest;");
if (!db.OpenEx(connStr, CDatabase::openReadOnly))
{
// Failed to connect to database.
return;
}
CRecordset rs(&db);
......
Вопрос заключается в том, что, кажется OpenEx() было приостановлено навсегда, потому что я не вижу никакого возвращаемого значения этого, и код никогда не работает на последующих строках.
Программа заморожена.
Должен ли я включать любую другую информацию в строку соединения?
Спасибо.
Как долго вы можете ждать? Достаточно, чтобы запустить таймаут? Также обратите внимание, что ваша строка подключения неполна. Отсутствует информация о пользователе и пароле. Просмотрите документацию для образца: https://msdn.microsoft.com/en-us/library/2dhc1abk.aspx#cdatabase__openex – erg
@erg Пользователь и пароль не нужны, вы вводите их в диалог подключения ODBC. Вам необходимо вставить их, когда вы используете опцию 'CDatabase :: noOdbcDialog'. – kajojeq
Это выглядит хорошо, попробуйте отлаживать глубже, когда я специально вставлял неправильное имя ODBC, это бросало меня на искушение. Попытайтесь проверить, где именно он держится. Предоставление неправильного имени ODBC происходит следующим образом: 'CDatabase :: OpenEx -> CDatabase :: Connect -> CDatabase :: ThrowDBException' – kajojeq