freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vc的人事管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2024-12-04 00:59本頁(yè)面

【導(dǎo)讀】化,自動(dòng)化以減輕人工的重復(fù)繁瑣勞動(dòng)。其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立維護(hù)以及前臺(tái)。性,完整性,安全性也是必要的。對(duì)于前臺(tái)要求穩(wěn)定,實(shí)用,易用。本系統(tǒng)是為公司人事管理的各種工作而設(shè)計(jì)的。根據(jù)需求分析,需要實(shí)現(xiàn)對(duì)系統(tǒng)用戶,基本信息,考勤考評(píng)的管理。經(jīng)過分析,本系統(tǒng)使用SQLSERVER做為其后臺(tái)數(shù)據(jù)庫(kù),采用ADO數(shù)據(jù)庫(kù)鏈接技術(shù);其中ADO使得編寫數(shù)據(jù)庫(kù)應(yīng)用程序變得簡(jiǎn)單容易。以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。

  

【正文】 cordset 對(duì)象的實(shí)例 : ()。 SQL 命令的執(zhí)行可以采用多種形式,下面我們一進(jìn)行闡述。 (1)利用 Connection 對(duì)象的 Execute 方法執(zhí)行 SQL 命令 Execute 方法的原型如下所示 : _RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options ) 其中 CommandText 是命令字串,通常是 SQL 命令。 參數(shù) RecordsAffected 是操作完成后所影響的行數(shù) , 參數(shù) Options 表示 CommandText 中內(nèi)容的類型, Options 可以取如下值之一: adCmdText:表明 CommandText 是文本命令 adCmdTable:表明 CommandText 是一個(gè)表名 adCmdProc:表明 CommandText 是一個(gè)存儲(chǔ)過程 adCmdUnknown:未知 25 Execute 執(zhí)行完 后返回一個(gè)指向記錄集的指針,下面我們給出具體代碼并作說明。 _variant_t RecordsAffected。 ///執(zhí)行 SQL 命令: CREATE TABLE 創(chuàng)建表格 users,users 包含四個(gè)字段 :整形 ID,字符串 username,整形 old,日期型 birthday m_pConnectionExecute(CREATE TABLE users(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME), amp。RecordsAffected, adCmdText)。 ///往表格里面添加記錄 m_pConnectionExecute(INSERT INTO users(ID,username,old,birthday) VALUES(1,39。39。39。39。Washington39。39。39。39。,25,39。39。39。39。1970/1/139。39。39。39。),amp。RecordsAffected,adCmdText)。 ///將所有記錄 old 字段的值加一 m_pConnectionExecute(UPDATE users SET old = old+1,amp。RecordsAffected,adCmdText)。 ///執(zhí)行 SQL 統(tǒng)計(jì)命令得到包含記錄條數(shù)的記錄集 m_pRecordset = m_pConnectionExecute(SELECT COUNT(*) FROM users,amp。RecordsAffected,adCmdText)。 _variant_t vIndex = (long)0。 _variant_t vCount = m_pRecordsetGetCollect(vIndex)。///取得第一個(gè)字段的值放入 vCount 變量 上兩句可以寫成 _variant_t vCount = m_pRecordsetGetCollect((_variant_t)((long)0))。 m_pRecordsetClose()。///關(guān)閉記錄集 CString message。 (共有 %d 條記錄 ,)。 AfxMessageBox(message)。///顯示當(dāng)前記錄條數(shù) (2)利用 Command 對(duì)象來(lái)執(zhí)行 SQL 命令 _CommandPtr m_pCommand。 ()。 26 _variant_t vNULL。 = VT_ERROR。 = DISP_E_PARAMNOTFOUND。///定義為無(wú)參數(shù) m_pCommandActiveConnection = m_pConnection。///非常關(guān)鍵的一句,將建立的連接賦值給它 m_pCommandCommandText = SELECT * FROM users。///命令字串 m_pRecordset = m_pCommandExecute(amp。vNULL,amp。vNULL,adCmdText)。///執(zhí)行命令,取得記錄集 在這段代碼中我們只是用 Command 對(duì)象來(lái)執(zhí)行了 SELECT 查詢語(yǔ)句, Command 對(duì)象在進(jìn)行存儲(chǔ)過程的調(diào)用中能真正體現(xiàn)它的作用。下次我們將詳細(xì)介紹。 (3)直接用 Recordset 對(duì)象進(jìn)行查詢?nèi)〉糜涗浖? 實(shí)例 —— void CGmsaDlg::OnDBSelect() { // TODO: Add your control notification handler code here _RecordsetPtr Rs1。 //定義 Recordset 對(duì)象 _bstr_t Connect(DSN=GMS。UID=sa。PWD=。)。//定義連接字符串 _bstr_t Source (SELECT count(*) FROM )。 //要執(zhí)行的 SQL 語(yǔ)句 ::CoInitialize(NULL)。 //初始化 Rs1 對(duì)象 HRESUL hr = ( __uuidof( Recordset ) )。 //省略對(duì)返回值 hr 的判斷 Rs1Open( Source, Connect, adOpenForwardOnly, adLockReadOnly, 1 )。 _variant_t temp=Rs1GetCollect(_variant_t((long)0))。 CString strTemp=(char* )(_bstr_t)temp。 MessageBox(OK!+strTemp)。 27 } 例如 m_pRecordsetOpen(SELECT * FROM users, _variant_t((IDispatch *)m_pConnection,true), adOpenStatic, adLockOptimistic, adCmdText)。 Open 方法的原型是這樣的 : HRESULT Recordset15::Open ( const _variant_t amp。 Source, const _variant_t amp。 ActiveConnection, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options ) 其中: ① Source 是數(shù)據(jù)查詢字符串 ② ActiveConnection 是已經(jīng)建立好的連接(我們需要 用 Connection 對(duì)象指針來(lái)構(gòu)造一個(gè)_variant_t 對(duì)象 ) ③ CursorType 光標(biāo)類型,它可以是以下值之一 ,請(qǐng)看這個(gè)枚舉結(jié)構(gòu) : enum CursorTypeEnum { adOpenUnspecified = 1,///不作特別指定 adOpenForwardOnly = 0,///前滾靜態(tài)光標(biāo)。這種光標(biāo)只能向前瀏覽記錄集,比如用MoveNext 向前滾動(dòng) , 這 種 方 式 可 以 提 高 瀏 覽 速 度 。 但 諸 如BookMark,RecordCount,AbsolutePosition,AbsolutePage 都不能使用 adOpenKeyset = 1,///采用這種光標(biāo)的記錄集看不到其它用戶的新增、刪除操作,但對(duì)于更新原有記錄的操作對(duì)你是可見的。 adOpenDynamic = 2,///動(dòng)態(tài)光標(biāo)。所有數(shù)據(jù)庫(kù)的操作都會(huì)立即在各用戶記錄集上反應(yīng)出來(lái)。 adOpenStatic = 3///靜態(tài)光標(biāo)。它為你的記錄集產(chǎn)生一個(gè)靜態(tài)備份,但其它用戶的新增、刪除、更新操作對(duì)你的記錄集來(lái)說是不可見的。 28 }。 ④ LockType 鎖定類型,它可以是以下值之一,請(qǐng)看如下枚舉結(jié)構(gòu): enum LockTypeEnum { adLockUnspecified = 1,///未指定 adLockReadOnly = 1,///只讀記錄集 adLockPessimistic = 2,悲觀鎖定方式。數(shù)據(jù)在更新時(shí)鎖定其它所有動(dòng)作,這是最安全的鎖定機(jī)制 adLockOptimistic = 3,樂觀鎖定方式。只有在你調(diào)用 Update 方法時(shí)才鎖定記錄。在此之前仍然可以做數(shù)據(jù)的更新、插入、刪除等動(dòng)作 adLockBatchOptimistic = 4,樂觀分批更新。編輯時(shí)記錄不會(huì)鎖定,更改、插入及刪除是在批處理模式下完成。 }。 ⑤ Options 可以取如下值之一: adCmdText:表明 CommandText 是文本命令 adCmdTable:表明 CommandText 是一個(gè)表名 adCmdProc:表明 CommandText 是一個(gè)存儲(chǔ)過程 adCmdUnknown:未知 5. 記錄集的遍歷、更新 根據(jù)我們剛才通過執(zhí)行 SQL 命令建立好的 users 表,它包含四個(gè)字段 :ID,username,old,birthday 以下的代碼實(shí)現(xiàn):打開記錄集,遍歷所有記錄,刪除第一條記錄,添加三條記錄,移動(dòng)光標(biāo)到第二條記錄, 更 改其年齡,保存到數(shù)據(jù)庫(kù)。 _variant_t vUsername,vBirthday,vID,vOld。 _RecordsetPtr m_pRecordset。 ()。 m_pRecordsetOpen(SELECT * FROM users, _variant_t((IDispatch*)m_pConnection,true), adOpenStatic, 29 adLockOptimistic, adCmdText)。 while(!m_pRecordsetadoEOF) { vID = m_pRecordsetGetCollect(_variant_t((long)0))。///取得第 1 列的值 ,從 0 開始計(jì)數(shù), ///你也可以直接給出列的名稱,如下一行 vUsername = m_pRecordsetGetCollect(username)。///取得 username 字段的值 vOld = m_pRecordsetGetCollect(old)。 vBirthday = m_pRecordsetGetCollect(birthday)。 ///在 DEBUG 方式下的 OUTPUT 窗口輸出記錄集中的記錄 if( != VT_NULL amp。amp。 != VT_NULL amp。amp。 != VT_NULL amp。amp。 != VT_NULL) TRACE(id:%d,姓名 :%s,年齡 :%d,生日 :%s\r\n, , (LPCTSTR)(_bstr_t)vUsername, , (LPCTSTR)(_bstr_t)vBirthday)。 m_pRecordsetMoveNext()。///移到下一條記錄 } m_pRecordsetMoveFirst()。///移到首條記錄 m_pRecordsetDelete(adAffectCurrent)。///刪除當(dāng)前記錄 ///添加三條新記錄并賦值 for(int i=0。i3。i++) { m_pRecordsetAddNew()。///添加新記錄 m_pRecordsetPutCollect(ID,_variant_t((long)(i+10)))。 m_pRecordsetPutCollect(username,_variant_t(葉利欽 ))。 m_pRecordsetPutCollect(old,_variant_t((long)71))。 30 m_pRecordsetPutCollect(birthday,_variant_t(1930315))。 } m_pRecordsetMove(1,_variant_t((long)adBookmarkFirst))。///從第一條記錄往下移動(dòng)一條記錄 ,即移動(dòng)到第二條記錄處 m_pRecordsetPutCollect(_variant_t(old),_variant_t((long)45))。/// 修改其年齡 m_pRecordsetUpdate()。///保存到庫(kù)中 備注:多次查詢可把查詢過程做成一個(gè)函數(shù) ExecuteSQL 讓 m_pRecordset 獲得連接指針m_pConnection 查詢結(jié)果 void ExecuteSQL(_ConnectionPtr m_pConnection, _RecordsetPtr m_pRecordset,CString strSql) { //執(zhí)行 Select 語(yǔ)句 BSTR bstrSQL = ()。 try { m_pRecordsetOpen(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText)。 //adOpenDynamic :動(dòng)態(tài) adLockOptimistic 樂觀封鎖法 adCmdText:文本查詢語(yǔ)句 } catch(__error error) { CString errorMessage。 (%s,(LPTSTR)())。 AfxMessageBox(errorMessage)。 } } //出錯(cuò)處理: 3127—— 沒有找到目標(biāo)表 31 3092—— 目標(biāo)表已經(jīng)存在 例如: catch(const __error e) { AfxMessageBox(())。 long errorCode=()。 if(3127==errorCode) AfxMessageBox(表不存在 )。 if(3092==errorCode) AfxMessageBox(表已經(jīng)存在 )。 return FALSE。 } 實(shí)現(xiàn)用戶登錄功能 全局類 class CGlobal { public: CUsers curUser。 CGlobal()。 virtual ~CGlobal()。 }。 用戶登錄對(duì)話框 圖 5- 1 登錄界面 部分代碼: 32 void CLoginDlg::OnOK() { //將對(duì)話框中編輯框
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1