一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

LoadRunner調(diào)用Oracle存儲(chǔ)過(guò)程

 昵稱10504424 2013-12-10

為了測(cè)試這個(gè)存儲(chǔ)過(guò)程,我遙了一圈去做這個(gè)事情,這里說(shuō)一下我自己接受到任務(wù)和自己開(kāi)始是怎么想的。

方法一:

一開(kāi)始我想著可以使用C#直接去調(diào)用存儲(chǔ)過(guò)程,然后用Loadrunner調(diào)用C#的dll去測(cè)試,后來(lái)發(fā)現(xiàn)找不到LoadRunner怎樣直接調(diào)用C#寫(xiě)的dll;可是dll存儲(chǔ)過(guò)程都已經(jīng)寫(xiě)好,不可能推倒重新用其他的方式去做,由于任務(wù)時(shí)間比較緊,就山寨的用C#寫(xiě)了個(gè) .exe 去調(diào)用 dll,完成后執(zhí)行,印象是:數(shù)據(jù)庫(kù)跟本一點(diǎn)壓力都沒(méi)有,可是負(fù)載機(jī)都已經(jīng) 100%了,并且這種做法得需要在每臺(tái)負(fù)載機(jī)都安裝一個(gè)oracle 客戶端,要不訪問(wèn)不了,負(fù)載機(jī)有 30臺(tái),每臺(tái)都去安裝一編,我倒!

方法二:

最后想到一種方法,寫(xiě)一個(gè)WebService 去調(diào)用Dll,Loadrunner再去調(diào)用WebService去進(jìn)行測(cè)試。(這種做法是不是很笨?有沒(méi)有其他更好的方法,請(qǐng)留言給我!)


下面就把整個(gè)過(guò)程詳細(xì)列一下,其實(shí)這個(gè)之前也都有做過(guò),但由于沒(méi)有記錄到博客,全忘記了,重寫(xiě)是多么的痛苦,血的教訓(xùn)說(shuō)明:寫(xiě)博客還是有必需的!

Step1:編寫(xiě)訪問(wèn)存儲(chǔ)過(guò)程的dll

復(fù)制代碼
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OracleClient;
using System.Linq;
using System.Text;

namespace PaysysInterfaceTest
{
    public class PaysysBase
    {
        public OracleConnection conn = null;
        public OracleCommand cmd = null;

        /// <summary>
        /// 數(shù)據(jù)庫(kù)初始化
        /// </summary>
        /// <param name="DataSource">數(shù)據(jù)庫(kù)源(Orlacle Client下的tnsnames.ora配置</param>
        /// <param name="DataUserId">數(shù)據(jù)庫(kù)登錄名</param>
        /// <param name="DataPassword">數(shù)據(jù)庫(kù)登錄密碼</param>
        /// <returns></returns>
        public int PaysysInit(string DataSource, string DataUserId, string DataPassword)
        {
            var mConn = string.Format("Data Source={0};User Id={1};Password={2};", DataSource, DataUserId, DataPassword);
            conn = new OracleConnection(mConn);
            try
            {
                conn.Open();
                cmd = new OracleCommand();
                cmd.Connection = conn;
            }
            catch (Exception ex)
            {
                return 0;
            }
            return 1;
        }

        /// <summary>
        /// 調(diào)用的存儲(chǔ)過(guò)程
        /// </summary>
        /// <param name="interfaceName">存儲(chǔ)過(guò)程名稱</param>
        /// <returns></returns>
        public int CallInterface(string interfaceName)
        {
            var nResult = 0;
            var queryString = interfaceName;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = queryString;

            try
            {
                cmd.ExecuteNonQuery();
                Console.WriteLine("Query Success!!");
                nResult = Convert.ToInt32(cmd.Parameters["result"].Value);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Query Error!!\r\n" + ex.Message);
                nResult = Convert.ToInt32(cmd.Parameters["result"].Value); ;
            }
            finally
            {
                cmd.Clone();
                conn.Close();
                Console.WriteLine("Close Db");
            }
            return nResult;
        }
    }

    public class PlayerLogin : PaysysBase
    {
public string s_account = ""; public string s_password = "";
/// <summary> /// 存儲(chǔ)過(guò)程初始化參數(shù) /// </summary> /// <param name="account">用戶賬號(hào)</param> /// <param name="password">用戶密碼</param> public void LoginInit(string account, string password) { s_account = account; s_password = password; InitParam(); } /// <summary> /// 初始化信息 /// </summary> private void InitParam() { //反回值 cmd.Parameters.Add("result", OracleType.Float); cmd.Parameters["result"].Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add("s_account", OracleType.VarChar); cmd.Parameters["s_account"].Direction = ParameterDirection.Input; cmd.Parameters["s_account"].Value = s_account; cmd.Parameters.Add("s_password", OracleType.VarChar); cmd.Parameters["s_password"].Direction = ParameterDirection.Input; cmd.Parameters["s_password"].Value = s_password;
//==================out================== cmd.Parameters.Add("d_login_time", OracleType.DateTime); cmd.Parameters["d_login_time"].Direction = ParameterDirection.Output; cmd.Parameters.Add("d_last_login_time", OracleType.DateTime); cmd.Parameters["d_last_login_time"].Direction = ParameterDirection.Output; cmd.Parameters.Add("d_last_logout_time", OracleType.DateTime); cmd.Parameters["d_last_logout_time"].Direction = ParameterDirection.Output; } /// <summary> /// 調(diào)用執(zhí)行存儲(chǔ)過(guò)程 /// </summary> /// <returns></returns> public int LoginInterface() { return CallInterface("player.login"); } } public class PlayerLogout : PaysysBase {
public string s_account = "";
public void LogoutInit(string account) { s_account = account; InitParam(); } private void InitParam() { //反回值 cmd.Parameters.Add("result", OracleType.Float); cmd.Parameters["result"].Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add("s_account", OracleType.VarChar); cmd.Parameters["s_account"].Direction = ParameterDirection.Input; cmd.Parameters["s_account"].Value = s_account; } public int LogoutInterface() { return CallInterface("player.logout"); } } }
復(fù)制代碼

遇到問(wèn)題:

1、在編寫(xiě)login的接口時(shí),因?yàn)橹怀跏蓟薎nput的參數(shù),還以為不需要Output的參數(shù),所以導(dǎo)致調(diào)用的時(shí)候一直出現(xiàn)參數(shù)缺少的問(wèn)題。入?yún)⒑统鰠⒍夹枰睿?/a>

Setp2:WebServices調(diào)用dll

1、新建工程:

2、新建好工程后添加剛剛寫(xiě)好的dll

3、WebService調(diào)用代碼

之后就可以調(diào)試一下了!

Setp3:部署到IIS(可以查看我之前的一編博客,是一樣的)

http://www.cnblogs.com/Martin_Q/archive/2010/12/06/1897614.html

調(diào)試結(jié)果

遇到問(wèn)題:

這里遇到一個(gè)很糟糕的問(wèn)題,使用IIS在調(diào)用到:conn.Open() 的時(shí)候出現(xiàn)一個(gè)錯(cuò)誤:system.data.oracleclient 需要 oracle 客戶端軟件 8.1.7 或更高版本。

這個(gè)問(wèn)題一定要值得注意,開(kāi)始我以為是iis沒(méi)有權(quán)限訪問(wèn)oracle目錄,我為什么會(huì)這么認(rèn)為呢?因?yàn)槲覟榱瞬檫@個(gè)問(wèn)題,我專門(mén)寫(xiě)了一個(gè).exe 去執(zhí)行調(diào)用,exe應(yīng)用程序執(zhí)行成功,iis出錯(cuò)!

原來(lái)問(wèn)題是由于我安裝的oracle客戶端為簡(jiǎn)易版本,很多很多的dll都沒(méi)有??梢跃W(wǎng)上找一下:10201_client_win32.zip 些版本client,當(dāng)然還有其他的權(quán)限問(wèn)題!這里沒(méi)遇到就不談了

Setp4:使用LoadRunner調(diào)用WebServices

1、Loadrunner新建WebService

2、點(diǎn)ManageServices 添加你的WebService地址

3、添加WebService 調(diào)用接口

搭建的地址為:http://10.20.87.62:81/Service.asmx 為什么后面需要手工加一個(gè):?WSDL 呢?(知道的同學(xué)說(shuō)一下!)

4、添加成功

5、添加對(duì)應(yīng)的存儲(chǔ)過(guò)程

6、添加成功后Action代碼

輸出結(jié)果:

All:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas./soap/envelope/" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:xsd="http://www./2001/XMLSchema"><soap:Body><PaysysLoginResponse xmlns="http:///"><PaysysLoginResult>1</PaysysLoginResult></PaysysLoginResponse></soap:Body></soap:Envelope>

LoginResult:1

這一步之后,大家應(yīng)該如何進(jìn)行下一步了!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美人妻一区二区三区| 一区二区三区国产日韩| 一区二区三区18禁看| 亚洲另类欧美综合日韩精品| 六月丁香六月综合缴情| 欧美激情一区=区三区| 成人精品网一区二区三区| 大尺度剧情国产在线视频| 国产中文另类天堂二区| 久久91精品国产亚洲| 国产传媒免费观看视频| 欧美韩国日本精品在线| 好吊视频一区二区在线| 欧美成人久久久免费播放| 亚洲一区二区欧美在线| 国产视频福利一区二区| 高清国产日韩欧美熟女| 日韩欧美亚洲综合在线| 99久久国产综合精品二区 | 激情综合五月开心久久| 国产超碰在线观看免费| 日韩欧美一区二区不卡视频| 初尝人妻少妇中文字幕在线| 91偷拍视频久久精品| 日木乱偷人妻中文字幕在线| 日韩精品一区二区亚洲| 日韩在线视频精品中文字幕| 九九热这里有精品20| 精品人妻精品一区二区三区| 午夜精品在线视频一区| 日本不卡视频在线观看| 最近的中文字幕一区二区| 国产老熟女超碰一区二区三区| 微拍一区二区三区福利| 欧美尤物在线视频91| 国产精品视频第一第二区| 国产内射在线激情一区| 精品日韩欧美一区久久| 欧美日韩亚洲综合国产人| 国产精品欧美激情在线| 粉嫩一区二区三区粉嫩视频|