Member 14837073 Ответов: 1

Как сделать страницу входа в базу данных ms acces в mfc


я попробовал код ,который упоминается ниже, даже я не смог найти, в чем проблема .(Выберите запрос работает нормально после того, как я не могу получить имя пользователя и пароль для следующих окон.
Я надеюсь прояснить этот вопрос ,если вы не получили, дайте мне знать

Я новичок в МФЦ если кто нибудь поможет то буду признателен

Заранее благодарю вас!

Что я уже пробовал:

 UpdateData();
     CDatabase database;
     CString SqlString;
     CString sDsn;
     CString sDriver = L"MICROSOFT ACCESS DRIVER (*.mdb, *.accdb)";
     CString sFile = L"G:\\manju\\wfh\\rock.accdb";
    
   sDsn.Format(L"ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile);
 TRY{
  database.Open(NULL,false,false,sDsn);
  CRecordset recset( &database );
  
  SqlString.Format(_T("SELECT *FROM new WHERE UserID ='%s' and Password = '%s' ", m_user,m_password));
  recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly);
  
  if(!recset) // HERE I AM FACING ISSUE 
  {
     AfxMessageBox (L" Login Suucessfully ");
    thrdlg dil;
//	  dil.DoModal();

  }
  else
  {
     AfxMessageBox(L" UserID and Password is wrong!! ");
  }

  database.Close();
 }

1 Ответов

Рейтинг:
0

Richard MacCutchan

if(!recset) // HERE I AM FACING ISSUE 
  {
     AfxMessageBox (L" Login Suucessfully ");
    thrdlg dil;
//	  dil.DoModal();

  }
  else
  {
     AfxMessageBox(L" UserID and Password is wrong!! ");
  }

Во-первых, логика вашего оператора if неверна; если объект recset существует, вы публикуете сообщение об ошибке. А во-вторых, и это еще более важно, вы игнорируете фактическое возвращаемое значение из открытого вызова. Вам нужно зафиксировать результат открытого вызова и проверить его. Таким образом, ваш код должен быть:
bool bSuccess = recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly);
if (bSuccess)
{
     AfxMessageBox (L" Login Suucessfully ");
    thrdlg dil;
//	  dil.DoModal();
  }
  else
  {
     AfxMessageBox(L" UserID and Password is wrong!! ");
  }


Member 14837073

"необработанное исключение в 0x6a112efo (msvcr90d.dll) в kgf .exe : 0xc0000005: доступ к месту чтения vilotaion 0x8370c29c "
я получаю эту ошибку

Richard MacCutchan

У вас где-то есть недопустимый адрес, который обычно является результатом неинициализированного указателя. Используйте отладчик для пошагового просмотра кода, чтобы выяснить, где он происходит и какой адрес недопустим.