據(jù)庫操作——ADO)
ADO——ActiveX Data Objects使用VBScript腳本語言調(diào)用ADO組件來進行數(shù)據(jù)操作。優(yōu)勢腳本靈活性高可實現(xiàn)的功能也較多可以隨意地把要實現(xiàn)的數(shù)據(jù)操作封裝成函數(shù)。前置UFT連接MySQL ODBC_nee~的博客-CSDN博客Connection對象掌管數(shù)據(jù)庫的連接和關(guān)閉功能。Dim adoConn 定義ADO連接對象 Dim ConnectionStr 定義數(shù)據(jù)庫連接字符串 獲取數(shù)據(jù)庫連接字符串 ConnectionStr DSNMySQL ODBC sys;SERVER127.0.0.1;UIDroot;PWDroot;DATABASEsakila;PORT3306 創(chuàng)建數(shù)據(jù)庫連接對象 Set adoConn CreateObject(adodb.Connection) 利用數(shù)據(jù)庫連接字符串打開數(shù)據(jù)庫 adoConn.Open ConnectionStr 此處進行數(shù)據(jù)庫操作 關(guān)閉數(shù)據(jù)庫 adoConn.Close 釋放數(shù)據(jù)庫對象 Set adoConn NothingCommand對象完成SQL語句的執(zhí)行。RecordSet對象存放執(zhí)行后的數(shù)據(jù)結(jié)果集。查詢數(shù)據(jù)庫Execute方法此方法可以對數(shù)據(jù)庫直接進行SQL語句執(zhí)行操作并且能夠?qū)ζ鋱?zhí)行結(jié)果進行返回返回結(jié)果為RecordSet。最后通過RecordSet對象的Field屬性獲取到字段值。Dim adoConn 定義ADO連接對象 Dim ConnectionStr 定義數(shù)據(jù)庫連接字符串 獲取數(shù)據(jù)庫連接字符串 ConnectionStr DSNMySQL ODBC;SERVER127.0.0.1;UIDroot;PWDroot;DATABASEgloria;PORT3306 獲取數(shù)據(jù)庫查詢語句 sqlStr Select * from user where LastName Wang 創(chuàng)建數(shù)據(jù)庫連接對象 Set adoConn CreateObject(adodb.Connection) 利用數(shù)據(jù)庫連接字符串打開數(shù)據(jù)庫 adoConn.Open ConnectionStr 執(zhí)行sql語句并返回對應(yīng)的結(jié)果集 Set adoRst adoConn.Execute(sqlStr) 獲取結(jié)果集中年齡字段的值 Msgbox adoRst.Fields.Item(age).Value 關(guān)閉數(shù)據(jù)庫 adoConn.Close 釋放數(shù)據(jù)庫對象 Set adoConn Nothing如果結(jié)果有多行記錄可以使用游標For i 1 To adoRst.Fields.CountMsgbox adoRst.Fields.Item(age).ValueadoRst.MoveNextNextEOF: End of LineWhile Not adoRst.EOFMsgbox adoRst.Fields.Item(age).ValueadoRst.MoveNextWend數(shù)據(jù)庫修改F:\study\UFT\sql.txt文件循環(huán)執(zhí)行把所有的SQL語句分割成數(shù)組并把數(shù)組全部取出來循環(huán)執(zhí)行SQLDim adoConn 定義ADO連接對象 Dim ConnectionStr 定義數(shù)據(jù)庫連接字符串 獲取數(shù)據(jù)庫連接字符串 ConnectionStr DSNMySQL ODBC;SERVER127.0.0.1;UIDroot;PWDroot;DATABASEgloria;PORT3306 獲取數(shù)據(jù)庫查詢語句集合 SQLCommands GetSQLCommands(F:\study\UFT\sql.txt) 創(chuàng)建數(shù)據(jù)庫連接對象 Set adoConn CreateObject(adodb.Connection) 利用數(shù)據(jù)庫連接字符串打開數(shù)據(jù)庫 adoConn.Open ConnectionStr 循環(huán)執(zhí)行sql語句 For i 0 To UBound(SQLCommands) adoConn.Execute SQLCommands(i) Next 關(guān)閉數(shù)據(jù)庫 adoConn.Close 釋放數(shù)據(jù)庫對象 Set adoConn Nothing Function GetSQLCommands(sqlPath) 創(chuàng)建fso模型對象 Set fso CreateObject(Scripting.FileSystemObject) Set f fso.OpenTextFile(sqlPath) 獲取txt中的所有文本 allSQLCommand f.ReadAll 對所有文本通過回車進行分割把sql語句分割成數(shù)組 Chr()從 0 到 31 之間的數(shù)字表示不可打印的 ASCII 代碼例如 Chr(10) 將返回一個換行符。 sqlcommands Split(allSQLCommand,Chr(10)) 返回所有sql語句數(shù)組 GetSQLCommands sqlcommands 釋放txt Set f Nothing 釋放fso Set fso Nothing End Function結(jié)果參數(shù)化使其更通用******************************************************************************************************************** Description:數(shù)據(jù)庫驗證函數(shù) Argument: ConnectionStr 數(shù)據(jù)庫連接字符串 sqlStr sql語句 verifyProperty 需要驗證的字段名 expectValue 驗證期待值 ******************************************************************************************************************** Function VerifySQLData(ConnectionStr,sqlStr,verifyProperty,expectValue) 創(chuàng)建數(shù)據(jù)庫連接對象 Set adoConn CreateObject(adodb.Connection) 利用數(shù)據(jù)庫連接字符串打開數(shù)據(jù)庫 adoConn.Open ConnectionStr 執(zhí)行sql語句并返回對應(yīng)的結(jié)果集 Set adoRst adoConn.Execute(sqlStr) 獲取實際值 actualValue adoRst.Fields.Item(verifyProperty).Value 對比預(yù)期值和實際值 If cstr(expectValue) cstr(actualValue) Then Reporter.ReportEvent micPass,SQL_DATA_CHECK,[actualValue expectValue cstr(actualValue) ] Else Reporter.ReportEvent micFail,SQL_DATA_CHECK,[expectValue cstr(expectValue) actualValue cstr(actualValue) ] End If 關(guān)閉數(shù)據(jù)庫 adoConn.Close 釋放數(shù)據(jù)庫對象 Set adoConn Nothing End Function VerifySQLData DSNMySQL ODBC;SERVER127.0.0.1;UIDroot;PWDroot;DATABASEgloria;PORT3306,Select * from user where LastName Wang,age,22結(jié)果關(guān)鍵參數(shù)進行環(huán)境變量的配置把一些關(guān)鍵參數(shù)進行環(huán)境變量的配置以便以后有任何變更可直接在配置文件里修改而不是去更改腳本中的數(shù)值。新建DB Configuration.xml文件在 UFT-File-Settings-Environment-用戶定義 導(dǎo)入只需更改調(diào)用函數(shù)的那行代碼就行獲取數(shù)據(jù)庫連接字符串 ConnectionStr DSNMySQL ODBC;SERVER127.0.0.1;UIDroot;PWDroot;DATABASEgloria;PORT3306 ******************************************************************************************************************** Description:數(shù)據(jù)庫驗證函數(shù) Argument: ConnectionStr 數(shù)據(jù)庫連接字符串 sqlStr sql語句 verifyProperty 需要驗證的字段名 expectValue 驗證期待值 ******************************************************************************************************************** Function VerifySQLData(ConnectionStr,sqlStr,verifyProperty,expectValue) 創(chuàng)建數(shù)據(jù)庫連接對象 Set adoConn CreateObject(adodb.Connection) 利用數(shù)據(jù)庫連接字符串打開數(shù)據(jù)庫 adoConn.Open ConnectionStr 執(zhí)行sql語句并返回對應(yīng)的結(jié)果集 Set adoRst adoConn.Execute(sqlStr) 獲取實際值 actualValue adoRst.Fields.Item(verifyProperty).Value 對比預(yù)期值和實際值 If cstr(expectValue) cstr(actualValue) Then Reporter.ReportEvent micPass,SQL_DATA_CHECK,[actualValue expectValue cstr(actualValue) ] Else Reporter.ReportEvent micFail,SQL_DATA_CHECK,[expectValue cstr(expectValue) actualValue cstr(actualValue) ] End If 關(guān)閉數(shù)據(jù)庫 adoConn.Close 釋放數(shù)據(jù)庫對象 Set adoConn Nothing End Function VerifySQLData Environment.Value(ConnectionStr),Select * from user where LastName Wang,age,22結(jié)果利用ADO打造Excel數(shù)據(jù)庫在數(shù)據(jù)驗證方面ADO是一個利器。但ADO在對Excel做數(shù)據(jù)驗證時同樣也具有相當不錯的效果。ADO默認Excel的每個sheet為一個表而每個Sheet的第一行即為字段名從第二行開始即為字段值。每個字段值會根據(jù)當前的列與字段名一一對應(yīng)。UFT中DataTable讀取Excel的方式和ADO數(shù)據(jù)源讀取Excel的方式是相同的。導(dǎo)入之后DataTable自動把第一行數(shù)據(jù)作為字段名來處理。