Аргументы для SQLConfigDataSource
плохо сформированы.См .:
Функция SQLConfigDataSource
И:
Функция ConfigDSN
Каждая паразавершается нулевым байтом, а весь список заканчивается нулевым байтом.(То есть два нулевых байта отмечают конец списка.)
Я работаю уже более десяти лет и называю это следующим образом:
if( ! bOk )//failed to open the default database for lack of DSN
{
TRACE("Could not find DSN\n");
BOOL ret= SQLConfigDataSource(
NULL,
ODBC_ADD_DSN,
(LPSTR) "Microsoft Access Driver (*.mdb)\0",
(LPSTR) "DSN=MS Access Database\0"
"Description=MS Access Database\0"
);
if( ! ret )
{
AfxMessageBox( _T("The 'Data Source Name' failed to install\nPlease call My Company\n800-555-5555") );
return FALSE;
}
}
Примечаниечто первые два лишних нуля являются избыточными, но они не причиняют вреда.Но последняя строка следует за двумя нулевыми, конец списка, правило.
"Description=MS Access Database\0"
Вы должны проверить возвращаемое значение SQLConfigDataSource
.И вы можете позвонить SQLInstallerError
, как описано в разделе Диагностика.Также в комментариях говорится, что ключевые слова и значения не должны содержать ?
.