Ⅰ wex5怎麼連接資料庫
//初始化資料庫連接
::CoInitialize(NULL);
連接資料庫
[cpp] view plainprint?
BOOL CLogin::ConnectDB(void)
{
HRESULT hr = NULL;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///創建 Connection 對象
if(SUCCEEDED(hr))
{
//登錄資料庫並連接資料庫DBCourse
//這里的server不能寫成127.0.0.1否則會出現未指定的錯誤,應該寫成Sql server登錄界面的伺服器名稱
m_pConnection->ConnectionString = "driver={SQL Server};server=LOGO-PC\\LOGO;uid=DBCourse;pwd=DBCourse;";
m_pConnection->Open("","","",adConnectUnspecified);
m_pConnection->DefaultDatabase = "DBCourse";
}
else
{
AfxMessageBox(TEXT("創建 Connection 對象失敗"));///顯示錯誤信息
return FALSE;
}
}
catch(_com_error e)///捕捉異常
{
CString errormessage;
errormessage.Format( TEXT("連接資料庫失敗 !\r\n 錯誤信息 :%s(%ld)"),e.ErrorMessage(),e.Error() );
AfxMessageBox(errormessage);///顯示錯誤信息
return FALSE;
}
return TRUE;
}
操作資料庫
[cpp] view plainprint?
void CLogin::OnBnClickedButton1()
{
if( m_user.GetWindowTextLength()<=0 || m_password.GetWindowTextLength()<=0 )
{
MessageBox(TEXT("請輸入用戶名或密碼!"), TEXT("錯誤:用戶名或密碼為空"), MB_OK | MB_ICONWARNING );
return;
}
if( FALSE==this->ConnectDB() ) return;
TCHAR szUserName[20];
TCHAR szPassword[50];
TCHAR szSql[MAX_PATH];
//獲取用戶輸入的用戶名和密碼
m_user.GetWindowText( szUserName, 20 );
m_password.GetWindowText( szPassword, 50 );
//創建_RecordsetPtr用來執行資料庫操作
_RecordsetPtr pRecordset;
pRecordset.CreateInstance("ADODB.Recordset");
_tcscpy_s( szSql, TEXT("select * from usr where uname='") );
_tcscat_s( szSql, szUserName );
_tcscat_s( szSql, TEXT("' and passwd='") );
_tcscat_s( szSql, szPassword );
_tcscat_s( szSql, TEXT("';") );
pRecordset->Open(_variant_t(szSql), _variant_t ((IDispatch*) m_pConnection,true), adOpenStatic, adLockOptimistic, adCmdText);
int nResult = DLG_RESULT_OK;
if( pRecordset->RecordCount>0 )
{
//MessageBox(TEXT("登錄成功!"), szUserName, MB_OK | MB_ICONINFORMATION );
}
else
{
MessageBox(TEXT("用戶名或密碼錯誤!"), TEXT("登錄失敗!"), MB_OK | MB_ICONINFORMATION );
nResult = DLG_RESULT_ERROR;
}
pRecordset->Close();
if( DLG_RESULT_OK==nResult ) Exit( DLG_RESULT_OK );
}
哦忘了一件事了,還需要在stafx.h文件中引入dll文件的,如此
[cpp] view plainprint?
//添加dll庫
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
//添加dll庫
//添加宏定義
#define DLG_RESULT_OK 1
#define DLG_RESULT_ERROR 2
#define DLG_RESULT_CANCEL 3
//添加宏定義
Ⅱ 前端常用的框架有哪些
一、 Web前端框架之Angular 2+
Angular 2+優點解析:
Angular 2+ 的最大優勢在於它的流行程度。也有人認為它和 Google 密切相關的名字,會影響團隊使用它。Angular 1 的迅速流行是因為那些來自其他互動式應用程序開發環境的人會發現對於開發單頁面 Web 應用程序具有相似的模型-視圖模式。通過對 Angular 1 進行現代化演變和重新構建框架的某些部分,Angular 2+ 已經真正的爆發了,大量的正式的和非正式培訓機構數量都讓人印象深刻,開發者有很強的市場競爭力。對於用戶來說它有一套用於構建用戶界面的豐富組件,這也是本系列中少有的幾個框架能夠做到這點。
缺點解析:
我們覺得 Angular 框架著重於在單個頁面應用程序中創建用戶界面並沒有處理構建完整的 Web 應用這個更大的關注點,如果不及早確定下來,這將會導致整個項目難以維護,在實際項目中,運行時提供不屬於核心框架的技術往往讓人覺得不可思議,這大大降低了 TypeScript 對最終開發者的價值。
發展方向:
Angular 5 剛剛發布,這看來是 Angular 已經成功的印證了快速發布版本的承諾,在 Google 的持續支持下,Angular 會越來越成熟。
像許多的大型組織一樣,Google 具有多重(分裂)的人格,從外表上看,Angular 團隊和那些專注於瀏覽器標準的團隊之間顯得很和諧。但我們的觀點是,和諧只是一層薄薄的窗戶紙。Angular 團隊對於 Web 組件和漸進式 Web 應用沒有一個真正解決方案。我們認為,業界普遍認可的標准將會在 Angular 框架中會逐步實現,這將會影響到如何更好的構建 Angular 應用將成為一個中/長期的風險。
使用環境:
如果你需要在一個大型的框架內獲取技術資源,框架內的技術通常很容易移植;或者你需要在框架中訓練開發人員,並且還要有一定的信心,他們會在短期內獲得一定的開發能力,這樣的話你可以考慮 Angular 2+ 。需要注意的是 Angular1(angular.js)與 Angular2+ 是截然不同的,其中的應用、技術和經驗不能直接移植到 Angular2+ 的開發中去。
如果你的 Web 應用能夠很好的轉化為標準的模型-視圖模式,那麼你也可以忽略其他直接考慮使用 Angular2+ 。
如果你對 Google Material UX 設計模式滿意,那麼 Material Angular 是遵循該模式的一種快速、簡單且可靠的方式。
二、Web前端框架之React + Rex
React + Rex優勢解析:
React 和 Rex 的最大優勢在於它們相對簡單和專注。做一件事情並把它做好是非常困難的,但這兩個庫都很有效地完成了它們的目標。雖然對於某些狀態容器方法可能是外部的,但大多數開發人員還是可以輕松掌握概念,並了解單向數據體系結構的好處,簡化大量的用戶界面應用程序。
缺點解析:
React 和 Rex 最大的弱點不是它們是什麼,而是它們不是什麼。要構建一個功能豐富的 Web 應用程序,你需要許多功能,一旦脫離 React 和 Rex 和其他一些庫的核心,你將發現一個非常分散的社區,擁有無數的解決方案和模式,不容易整合在一起。
因此,雖然 React 和 Rex 都是非常專注的庫,但缺乏經驗的團隊還是會很容易地生成不可維護的解決方案,而不是意識到他們所做的選擇會導致性能不佳或錯誤。即使有經驗的開發人員也可能意識到,一個鬆散的架構或慣例可能會在未來困擾他們。
假省錢是一種對自己的欺騙,組織范圍內採用 React 和 Rex 將輕松降低無效率問題。沒有其他庫和模式的廣泛約定和標准化,標准化 React + Rex 比較於我們正在採用的 JavaScript 來編寫我們的應用程序效率要高。
發展方向:
Facebook 和 React 最近從繁瑣的附加專利糾紛中抽離,他們認識到,就像其他項目一樣,更廣泛的社區能夠提高自己的聲音。我覺得這有助於 Facebook 意識到他們還不能更好地了解我們,相信我們來引導項目。希望這將繼續貫穿項目的特點和技術方向。
很難預測 React 和 Rex 的未來。但是,將庫集中在一起,確實會顯著提高適應性,大多數React + Rex 模式都會促進一個分離的體系結構,從而可以輕松地進行重構和迭代。兩年前,大家喜歡的還是React + Flux,但整個社區很快就擁抱了Rex。思維或模式的其他重大轉變可能很容易被採納。這種關鍵能力可能會持續到未來。
使用環境:
如果你很少需要手把手指導,並且正在尋找更好的庫而不是全面的框架,那麼 React + Rex 可能是正確的。在這一過程中,你不僅需要對你的團隊和組織的能力保持誠實,還要在你的初始開發過程中,以及在整個應用程序的長期維護過程中保持誠實。
三、Web前端框架之Vue.js
vue.js優勢介紹:
漸進式構建能力是vue.js最大的優勢,vue 有一個簡潔而且合理的架構,使得它易於理解和構建。
vue 有一個強大的充滿激情人群的社區,這為vue.js增加了巨大的價值,使得為一個空白項目創建一個綜合的解決方案變得十分容易。
缺點介紹:
在模型-視圖應用程序和狀態容器類型的應用程序之間的互相轉換可能會令人感到困惑,即使沒有完美包含一個模式到另一個模式的完美轉換,但讓人感覺希望能維持兩個模式的相關性。對於那些期待vue.js完美解決方案,並可能導致難以維護不一致的應用程序的人來說,這至少是令人困惑的。
一個更大的挑戰是vue.js依賴於一個單獨的人,很明顯,其他的項目基本是由一個組織提供支持,但這讓人感覺更加有意義,雖然它有一個強大文件的社區和許多有創新的新增項目,但是 vue 核心的開發基本落在一個人身上。
我們很高興看到 vue 更加容易接受新興的標准方法,但是它的類似於 Web 組件的模式,而不是真正的 Web 組件,這可能是 vue 所得不償失的地方。
發展前景:
雖然vue.js有相當廣泛的應用,但也很難預測在中期發展中這個勢頭能持續多久,它不是由一個商業組織直接支持並維護,因此,這很大程度上依賴於維護者的生存能力和繼續維護下去的願望來決定。
它也表現出了一定程度的語言適應能力,並且隨著某些模式的落伍和失寵而繼續保持自身語言的現代化和時代性,目前沒有跡象表明vue.js架構將來無法適應進一步發展。
使用場景:
如果你有一個傳統的Web應用程序,並需要一個強壯穩健的應用程序層,那麼vue.js 可能是一個很好的選擇,它有清晰的模式,即使沒有經驗的團隊也能正確或者錯誤的使用它。盡管vue UX框架沒有開箱即用的功能,但在vue.js上也能大量持續性構建應用,這將有利於你的項目。
以上就是今天為大家分享的關於常用的Web前端框架優缺點分析的文章。想要成為合格的前端人才,一定要掌握這些框架。