終於連接成功並可以操作數據庫了 哎 對我我這個菜鳥來說是 很興奮的一步~!
下面記錄代碼~!
#include<afxdb.h> //連接數據庫需要的頭文件~!
#include"stdlib.h"
......
///添加數據庫連接函數
CDatabase m_db;
CRecordset m_Set;
try
{
//DSN="數據庫名稱" UID = “用戶名” //PWD=“密碼”
m_db.OpenEx(_T("DSN=ZZNDB;UID=sa;PWD=111111"),CDatabase::noOdbcDialog);
m_Set.m_pDatabase = &m_db;
}
catch(CDBException* ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
catch(CMemoryException *pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
catch(CException *e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
}
CString sql = _T("SELECT passwords FROM longin where username ='zzn'");
CString psd; //存放查詢結果
TRY //以前沒有用過的TRY CATCH~!
{
m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
m_Set.GetFieldValue(_T("passwords"),psd);
}
CATCH(CDBException,ex);
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
END_CATCH
int n =lstrlen(psd);
char *Temp = new char[n];
WideCharToMultiByte(CP_ACP,0,psd,-1,Temp,256,NULL,NULL); //由於產生寬字符所以需要用函數進行轉換~!
// pTemp =*(char) psd.GetBuffer(psd.GetLength()); //無寬字符情況下可以用這個方法得到行對應的*char
if(strcmp((const char*)Temp,(const char*)"111111")==0)
{
AfxMessageBox(_T("密碼正確~!"));
}
。。。。。。。